Graham Dumpleton
grahamd at dscpl.com.au
Thu Oct 27 18:55:25 EDT 2005
Jorey Bump wrote .. > Brandon N wrote: > > A) Is it requestHandler's job to determine which file was requested and > > respond accordingly (via the request's .filename?) with a switch > > construct or equivalent? > > Yes and no. Apache's already passed the file to the handler based on its > extension, presence in a directory, or other criteria. The developer of > the handler gets to decide what the handler does with *whatever* is > passed to it. Some assume it will contain only valid Python code and > process it as such (mod_python.publisher, for example). Some might want > to process proprietary or other file formats using python (you might > make a handler to display Word files, for example), but remain agnostic > about the actual filename or extension. But there's no reason why your > handler can't branch according to the file extension (which is what > Graham's Vampire does, if I'm not mistaken). If you are coming from a PHP background where each URL essentially maps to a distinct file, Vampire may well be a good starting point as it works in a similar way at it most basic level. Thus, where in PHP you might have: index.php # URL -> /index.php search.php # URL -> /search.php Vampire would similarly have separate files for each resource, although in Vampire it is the name of the handler within the file which dictates what extension the URL needs to have: index.py def handler(req): ... # /index def handler_html(req): ... # /index.html def handler_php(req): ... # /index.php (Yes, pretend we are PHP when we aren't). search.py def handler(req): ... # /search def handler_html(req): ... # /search.html Thus, if you want to write your code in the form of basic handlers but a distinct handler for each resource, the basic dispatch mechanism of Vampire is going to allow you to get started quicker. Another alternative as Jorey pointed out is mod_python.publisher, however it doesn't allow you to as easily dictate use of multiple different extension types used on URLs nor is it necessarily as easy to mix static files in the same directory. For a further basic introduction to Vampire, see: http://www.dscpl.com.au/projects/vampire/articles/vampire-001.html Graham
|