On Thursday 23 November 2006 21:29, robert wrote: > When a LAMP programmer comes to Python, there are so many different > confusing things. It starts with a 'non-documented' cgi module - a > 'High-Level-Interface', that cannot even iterate over the form items. A > name ZOPE in focus which reveals to be a monster system with 2-year > learning-curve, ready for running an article editorial system for TOP-10 > newspaper companies, but unable to make simple things simple. A handful > of different Djangos - choose one for each weekday and programmer ... > And Ruby made it with this single-known simple URL-to-method-router (And > possibly when coming from PHP & Perl one recognizes ::@$_$%ยงยง%/&... and > the old namespace dirt) If there would have been a good cgi-system and a > somewhat comfortable advanced URL-to-OO-router (beyond the socket > wrapper HTTPServer) well exposed in the Python standard lib, the numbers > would be probably very different today ...
I can fully second that. Coming from Perl and being used to the CGI module that is de-facto standard and already doing things much better than Python's equivalent my first thought was: "Does Python really expect me to re-invent the wheel to write basic CGIs?" So I started creating cookie-based session handlers, form field handling etc. The reason of my posting it not only to complain though. My Python skills are average but I would really like to help contribute some code on this topic. I don't know Ruby-on-Rails myself but I have worked with CGIs for ten years both in C (yuk) and Perl (Perl=semi-yuk / Perl-CGI=yum) and think I know what people coming from Perl expect. And I'm not speaking of Zope or Django or huge frameworks. I try to avoid frameworks wherever I can (I want to write Python - not Zope or Django). I rather rely on the standard library unless it's really saving me time and worth learning another language. Are frameworks perhaps even telling that the standard library is still lacking in some way? I'm thinking of features like: - cookie handling - cookie-session handling (similar to PHP or Perl's CGI::Session; combined with database backends or simple text files) - handling of form fields (Perl's CGI class can easily redisplay what has been entered in the fields when they got submitted through a <FORM>) - accessing parameters (honestly I haven't yet understood why I need to use .value on FielStorage dictionaries - why isn't it just a plain dictionary?) - state keeping (storing the contents of all form fields on disk to retrieve it later) - creating form elements easily (option lists for example from dictionaries and lists like in Perl) - creating standard HTML elements (or do you remember how DOCTYPE looks without looking it up?) - handling of file uploads (which is just a recipe on ActivePython at the moment) - controlling HTTP headers (expires, redirections, charset) - convenience functions e.g. for getting the client IP address without needing to read ENV['REMOTE_ADDR'] Well, of course there are modules like 'cgi' or 'cookielib' and others may argue that everything is already there. And there is a 'Web.py' already (I assume every CGI programmer has written their own Web.py already). But can't we come closer to what other scripting languages provide? Something common? Can't a simple form-based CGI just be a matter of a dozen lines? When it comes to CGIs Python loses its elegance for no reason. I'm ready to invest work and ideas if anyone else is interested. Perhaps some day it makes it into the standard library or at least gives us something between the features of the standard library and huge framework monsters - something people can be pointed at when starting with Python and CGIs. I'll probably do that anyway because my web projects all use their own reinvented wheel and I'm losing the overview. And even Perl has come that route - it started with a cgi-lib.pl which later became the 'CGI' standard module. Is it just a matter of lacking resources or interest? Even if there is no interest I'll probably read "man CGI" and "man CGI::Session" again and start implementing something nifty for ex-perlies like myself. Hmmm, batteries included even for CGI programmers, a man can dream. :) Cheers Christoph -- http://mail.python.org/mailman/listinfo/python-list