Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Writing a website in Python

Tags:

I'm pretty proficient in PHP, but want to try something new.

I'm also know a bit of Python, enough to do the basics of the basics, but haven't used in a web design type situation.

I've just written this, which works:

#!/usr/bin/python

def main():
    print "Content-type: text/html"
    print
    print "<html><head>"
    print "<title>Hello World from Python</title>"
    print "</head><body>"
    print "Hello World!"
    print "</body></html>"

if __name__ == "__main__":
    main()

Thing is, that this seems pretty cumbersome. Without using something huge like django, what's the best way to write scripts that can process get and post?

like image 402
Rich Bradshaw Avatar asked Jul 01 '09 19:07

Rich Bradshaw


2 Answers

Your question was about basic CGI scripting, looking at your example, but it seems like everyone has chosen to answer it with "use my favorite framework". Let's try a different approach.

If you're looking for a direct replacement for what you wrote above (ie. CGI scripting), then you're probably looking for the cgi module. It's a part of the Python standard library. Complimentary functionality is available in urllib and urllib2. You might also be interested in BaseHTTPServer and SimpleHTTPServer, also part of the standard library.

Getting into more interesting territory, wsgiref gives you the basics of a WSGI interface, at which point you probably want to start thinking about more "frameworky" (is that a word?) things like web.py, Django, Pylons, CherryPy, etc, as others have mentioned.

like image 104
esm Avatar answered Sep 28 '22 00:09

esm


As far as full frameworks go I believe Django is relatively small.

If you really want lightweight, though, check out web.py, CherryPy, Pylons and web2py.

I think the crowd favorite from the above is Pylons, but I am a Django man so I can't say much else.

For more on lightweight Python frameworks, check out this question.

like image 42
Paolo Bergantino Avatar answered Sep 28 '22 00:09

Paolo Bergantino