where do I begin with web programming in python?

Discussion in 'Python' started by jmDesktop, May 1, 2008.

  1. jmDesktop

    jmDesktop Guest

    I have been to the main python site, but am still confused. I have
    been using .net, so it may be obvious how to do this to everyone
    else. I am aware there are various frameworks (Django, Pylons, etc.),
    but I would like to know how to create web pages without these. If I
    have mod_python or fastcgi on apache, where do I start? I don't have
    clue where to begin to create a web page from scratch in python. I am
    sure I will want to access database, etc., all the "normal" stuff, I
    just want to do it myself as opposed to the frameworks, for learning.

    Thank you for any help.
     
    jmDesktop, May 1, 2008
    #1
    1. Advertisements

  2. The web frameworks make it a lot easier. But you can use the httplib
    modules. You should check out the wiki: http://wiki.python.org/moin/WebProgramming

    There's also a couple of books on the topic: "Python Web Programming"
    by Steve Holden, and "Web Programming in Python" by Thiruvathukal.

    Check out the cgi-type stuff especially.

    Hope that helps some.

    Mike
     
    Mike Driscoll, May 1, 2008
    #2
    1. Advertisements

  3. I highly recommend WSGI instead of mod_python or (fast)cgi. I've heard
    only bad things about mod_python over the past years and CGI is totally
    old school.

    Check out Python Paste, CherryPy and Django. You can also try the Zope,
    Zope3 and Plone world but Zope is usually for larger and complex
    applications.

    Most frameworks come with their own little web server for development, too.

    Christian
     
    Christian Heimes, May 1, 2008
    #3
  4. I'd also suggest avoiding coding anything directly to mod_python and
    instead base things on WSGI. You can still run it on mod_python with a
    suitable adapter, but you can also run it with mod_wsgi, mod_fastcgi,
    or using pure Python web servers such as the one in Paste as well.

    For a low level nuts and bolts (anti framework) approach I'd suggest
    looking at:

    http://dev.pocoo.org/projects/werkzeug/

    This gives you all the basic components, but it is really up to you as
    to how you put them together, which seems to be what you want to be
    able to do.

    Graham
     
    Graham Dumpleton, May 2, 2008
    #4
  5. Or if you don't want to use any 3rd party package and have Python 2.5,
    you may start from http://www.xml.com/pub/a/2006/09/27/introducing-wsgi-pythons-secret-web-weapon.html.
    Here's the standard "Hello world!" example:

    from wsgiref.simple_server import make_server

    def application(environ, start_response):
    start_response('200 OK',[('Content-type','text/html')])
    return ['<html><body>Hello World!</body></html>']

    httpd = make_server('', 8000, application)
    print "Serving HTTP on port 8000..."
    httpd.serve_forever()

    and point your browser to http://localhost:8000/

    HTH,
    George
     
    George Sakkis, May 2, 2008
    #5
  6. jmDesktop

    Paul Rubin Guest

    I didn't notice anyone mentioning the simplest answer of them all:
    write an old fashioned cgi using python's cgi module.
     
    Paul Rubin, May 2, 2008
    #6
  7. jmDesktop

    7stud Guest

    Directions for a simple CGI script:

    1) Start apache.

    2) Use a text editor to create a webpage with a link:

    <html>
    <head>
    <title>Python CGI Test</title>
    </head>

    <body>
    <div>
    <a href="http://localhost/cgi-bin/first.py">click me</a>
    </div>
    </body>

    </html>

    Save that file with a .htm extension anywhere on your computer, e.g.
    name the file test.htm and save it in C:\My Documents.


    3) The value of the link's href attribute is a special url. The url
    starts with "http://localhost", or it may need to start with something
    like http://localhost:8080" depending on what port number you
    installed Apache on. If you used the default port when you installed
    Apache, then the first part of the url will be "http:/localhost".

    The rest of the url is the relative path to your cgi script. The path
    is relative to your Apache2 folder. For instance, my directory
    structure looks like this:

    Apache2
    ----htdocs
    ----cgi-bin
    --------first.py
    ----etc.

    So the relative path to my cgi script is "/cgi-bin/first.py".

    4) Create a cgi script:

    #!/usr/bin/env python

    #For Windows, instead of the above line use
    #something like: #!C:\Python25\python.exe
    #instead. The path after "#!" should be the
    #path to wherever python.exe is on your computer.

    import cgitb; cgitb.enable()

    #The above line will cause error messages to
    #be sent to your browser, which is helpful for
    #debugging. Otherwise, your browser will just
    #show a blank page when there is an error in your
    #script

    print "Content-type: text/html"
    print
    print "<h1>Hello World</h1>"


    The first print statement is the minimum header you need when
    responding to a web page. After you print all the headers you desire,
    then you need to print a blank line. After the blank line, you print
    the html that you want the browser to display.


    5) On Unix: you have to set the file permissions for your cgi script.
    Everyone must be able to read and execute your cgi script:

    $ chmod 755 first.py


    6) Start your web browser, and click on File>Open and navigate to
    your .htm file. When your html page opens in your browser, click on
    the link. The link will call your python cgi script, the cgi script
    will respond my sending some html to your browser, then your browser
    will display the html.
     
    7stud, May 2, 2008
    #7
  8. I agree. Try cherrypy. I was able to write simple issue tracking
    system for my project with basic web interface within 2 weeks.
    Prior to this I had no web development experience at all. It was
    really easy with cherrypy to start.
     
    andrei.zavidei, May 2, 2008
    #8
  9. jmDesktop

    CM Guest


    Really? I tried CherryPy for a few minutes--totally 100% new to
    web programming--and though I was pleased at the very basic "Hello,
    World!" tutorial, I was unable to figure out how to use the more
    advanced tutorials that come with the package. Could you suggest
    how one could learn? I have experience with Python and GUI app
    development, zero on web apps, but want to make widget-having web
    apps which uses Python as the logic.

    Any tips would be appreciated!

    Also, beyond just running a small test web app with the "server"
    running on my own computer, what is a basic way to try it out
    actually on the web? Thanks!
     
    CM, May 2, 2008
    #9
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.