|  | In [WebappFrameworkComparison/Planning] i prepared |  | In [WebappFrameworkComparison/Planning] i prepared | 
            |  | a few questions, so i now try to answer them ... |  | a few questions, so i now try to answer them ... | 
            |  |  |  |  | 
            |  |  |  |  | 
            |  | ** How easy was the framework to learn ? ** |  | ** How easy was the framework to learn ? ** | 
            |  |  |  |  | 
            | n |  | n | N/A - I already knew the framework | 
            |  |  |  |  | 
            |  | ** How easy was the setup ? ** |  | ** How easy was the setup ? ** | 
            | n |  | n |  | 
            |  |  |  | IMHO .. _very_ easy .. but.. i already knew it .. | 
            |  |  |  | so no surprises (but.. it's really just svn checko | 
            |  |  |  | ut - and creating a symlink to python site-package | 
            |  |  |  | s) | 
            |  |  |  |  | 
            |  |  |  |  | 
            |  | ** How easy is the deployment of new versions ? ** |  | ** How easy is the deployment of new versions ? ** | 
            |  |  |  |  | 
            |  |  |  |  | 
            | n |  | n | easy.. update the files.. and reload apache | 
            |  |  |  |  | 
            |  | ** How extend able is the result ? (e.g. Imagine i |  | ** How extend able is the result ? (e.g. Imagine i | 
            |  | would like to add a workflow where changes get on |  | would like to add a workflow where changes get on | 
            |  | line once an administrator approves them) ** |  | line once an administrator approves them) ** | 
            |  |  |  |  | 
            | n |  | n | as easy as it gets ... and most of the times exten | 
            |  |  |  | sions could be done without littering existing cod | 
            |  |  |  | e (e.g. through signals like pre/post model save) | 
            |  |  |  |  | 
            |  | ** How much duplication was necessary ? (e.g. need |  | ** How much duplication was necessary ? (e.g. need | 
            |  | to describe the models in the database as well as |  | to describe the models in the database as well as | 
            |  | in code or xml ? / need to describe attributes of |  | in code or xml ? / need to describe attributes of | 
            |  | models in models and views ?, etc.) ** |  | models in models and views ?, etc.) ** | 
            |  |  |  |  | 
            | n |  | n | well .. i did some duplication because for example | 
            |  |  |  | the 'details' view is really simplistic .. so i " | 
            |  |  |  | defined" there again which fields the model has .. | 
            |  |  |  | but this could be done more generic.. or .. in mo | 
            |  |  |  | st cases.. simply "design" this view template .. | 
            |  |  |  |  | 
            |  | ** How much useless code (code which is the same f |  | ** How much useless code (code which is the same f | 
            |  | or every application, view, model, ...) was requir |  | or every application, view, model, ...) was requir | 
            |  | ed ** |  | ed ** | 
            |  |  |  |  | 
            | n |  | n | well.. i don't know of any .. i probably could hav | 
            |  |  |  | e saved me two lines and used the generic list and | 
            |  |  |  | details views, instead of writing my own .. | 
            |  |  |  |  | 
            |  | ** URLs: ** |  | ** URLs: ** | 
            |  |  |  |  | 
            |  | ** How does the mapping of URLs work ? ** |  | ** How does the mapping of URLs work ? ** | 
            |  |  |  |  | 
            | n |  | n | through regular expressions which map against view | 
            |  |  |  | functions | 
            |  |  |  |  | 
            |  |  |  | this were my url definitions: | 
            |  |  |  |  | 
            |  |  |  | [code] | 
            |  |  |  | urlpatterns = patterns('barcrud.views', | 
            |  |  |  | (r'^$', 'list'), | 
            |  |  |  | (r'^create.*$', 'edit'), | 
            |  |  |  | (r'^edit/(?P<bar_id>\d+)/$' | 
            |  |  |  | , 'edit'), | 
            |  |  |  | (r'^details/(?P<bar_id>\d+) | 
            |  |  |  | /$', 'details'), | 
            |  |  |  | (r'^postcomment/(?P<bar_id> | 
            |  |  |  | \d+)/$', 'postcomment'), | 
            |  |  |  | ) | 
            |  |  |  | [/code] | 
            |  |  |  |  | 
            |  | ** How can you link within templates to other acti |  | ** How can you link within templates to other acti | 
            |  | ons/views/... ? ** |  | ons/views/... ? ** | 
            |  |  |  |  | 
            | n |  | n | unfortunately .. i was too lazy to implement it ev | 
            |  |  |  | erywhere the "clean" way .. in a real application | 
            |  |  |  | it should definitifely be used: | 
            |  |  |  |  | 
            | t |  | t | it is possible to make reverse lookups which tries | 
            |  |  |  | to apply a given set of parameters to the URL pat | 
            |  |  |  | terns .. a typical get_absolute_url method in the | 
            |  |  |  | _model_ looks like this: | 
            |  |  |  |  | 
            |  |  |  | [code] | 
            |  |  |  | @permalink | 
            |  |  |  | def get_absolute_url(self): | 
            |  |  |  | return ('barcrud.views.details', (), { 'ba | 
            |  |  |  | r_id': self.id }) | 
            |  |  |  | [/code] | 
            |  |  |  |  | 
            |  |  |  | this could also be used for editing urls & co .. a | 
            |  |  |  | nd .. you could use named URLs to link to URLs not | 
            |  |  |  | associated with models.. | 
            |  |  |  |  | 
            |  | # Various Comments |  | # Various Comments | 
            |  |  |  |  | 
            |  | # Code Examples |  | # Code Examples | 
            |  |  |  |  |