[mod_python] Announcement: Roadkill version 0.01 "Kitten"

Jonathan Gardner jgardner at jonathangardner.net
Sat Jun 7 22:31:53 EST 2003


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On Friday 06 June 2003 13:19, Geert Jansen wrote:
> The situation about Python web frameworks is a bit confusing and I think
> there is no "killer app" yet. However, I have a strong personal opinion
> that the standard <p> <% print "Hello, world!" %> templating systems
> don't cut it. When you create a big dynamic web site, you need something
> more powerful and on a much higher abstraction level. Creating a large
> site with a traditional ASP system is like writing a GUI word processor
> with only a setPixel() call.
>

Let's make the killer app, right here, right now. I am building the 
framework for my sites, and a commercial project. I know that I want to use 
mod_python because there are so many benefits to it, even above perl.

What would you suggest, within the limitations of current HTTP technology?

Some ideas I came up with are as follows. Let's discuss -- be honest about 
the ideas. You add your own.

- - Forms. It seems nice to have the code that processes the form input right 
next to the code that makes the form HTML code. This screams "put it all in 
a class!" So I came up with a few classes that should be subclassed:
	- Text input
	- Int input
	- Float input
	- Zip Code input
	... etc ...

You can do the same with the other form elements -- select, checkboxes, and 
radio buttons.

- - Groups of form elements. Sometimes I want a group of elements that go 
together. Example: Login box (name/email, password, submit), address 
(line1, line2, city, state, zip, phone) and cc info (cc #, address, name, 
etc..) I thought of having a class that does the whole thing together. You 
give it some namespace, and it puts its element in that namespace in the 
args. For instanc, if you have an address group of elements, and you give 
it the namespace "fred", then the args come back as fred.line1, fred.line2, 
fred.city, fred.state, fred.whatever.

- - Permanent and temporary sessions. Every website uses cookies for only one 
thing - sessions. We should have this built in by default. Some pages have 
it turned on, some pages won't need it and have it turned off. What happens 
is when the guy visits a page that needs a session, it sets the session 
cookie, or gets the existing one. Then it goes to the database and grabs 
the associated data, and it unserializes the data into a python object. 
Tada - you have a session. It also does some rudimentary checking to see if 
the browser has cookies turned on, redirecting them to another page if they 
do not.

- - Keeping HTML totall separate from the code is a very good idea. 
Unfortunately, it makes things like loops or iterations (like listing some 
results) difficult. I believe the best way around this is to allow some 
python code, in its pure python form, in the page somehow. However, this 
should be extremely light and only when necessary. Is there anyway around 
this?

- - Database connection. This is something that is really important, even 
though it isn't part of the web server per se. I believe that DB-API (and 
perl DBI) just doesn't cut it because it is too low-level. There are so 
many better ways to do things. One of the biggest problems I have is 
getting data-driven SQL statement put together without taking 100 lines of 
code to do it. I found that by writing select as a function that takes 
parameters (like columns, from tables, join tables, where parameters, 
etc...) things get a lot easier. I believe we should build a system that 
has this in there.

- - Code-generated HTML. Every once in a while, we need to build our HTML 
elements manually in the code, putting every argument in precisely. This is 
annoying, and the code is always ugly. What I do is use a function that 
does it all for me. Example:
	html.select("state", (... list of states...)) -> A select list of states
	html.link(html.utl('', arg1=value1, arg2=value2), "Click here", 
class="big_link") -> a link with properly formatted arguments and all.

If we can agree on what we REALLY want, and if we take advantage of Python, 
expecially the things that make it so much more specialer than perl and 
Java, I think we can come up with THE KILLER SOLUTION. How about that for a 
project name? TKS?

- -- 
Jonathan Gardner
jgardner at jonathangardner.net
(was jgardn at alumni.washington.edu)
Live Free, Use Linux!
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (GNU/Linux)

iD8DBQE+4spJWgwF3QvpWNwRAp9hAJ9R/eXSdhIJ/4g0x0mYOeWEMD6qhwCfZOVv
HJD8G8mUY8fNeyW50PlMEeM=
=nfz+
-----END PGP SIGNATURE-----




More information about the Mod_python mailing list