from os.path import join
from django.conf.urls.defaults import url
from django.views.generic.simple import direct_to_template
def page(destination, prefix='',
template_dir='',
name_prefix='',
default_extension='.html'):
"""
Returns an url() object for the given name using direc_to_template.
For "name":
>>> url(^name/$,
... direct_to_template,
... {'template': 'name.html'},
... name='name')
can be expressed as:
>>> page('name')
Usage:
urlpatterns = patterns('views',
url(r'Regexp/$', view, name='str'),
url(r'Regexp2/$', view, name='str'),
page('page_name'),
)
"""
return url(r'^%s/$' % join(prefix, destination),
direct_to_template,
{'template': '%s%s' % (join(template_dir, destination),
default_extension)},
name='%s%s' % (name_prefix, destination))
def build(prefix, destination_list,
template_dir='', # Where to look for the templates
name_prefix='', # Prefix to use to name URLs, cheap_page (the 'cheap_')
default_extension='.html' # are the pages .html, .csv, .whatever?
):
"""
Builds a patterns object to render all the pages
in destination_list.
Usage:
urlpatterns = patterns('', ...)
urlpatterns += build('Regexp', ['page1', 'page2', ...])
"""
urlpatterns = []
for destination in destination_list:
urlpatterns.append(page(
destination, prefix, template_dir, name_prefix,
default_extension))
return urlpatterns
Comments
I've added a Google code repo, in case anyone is interested.
http://code.google.com/p/django-cheap-pages/
#