django-dburlresolvers
=====================
A URL resolver which store the URL patterns in database, which means a webmaster can define some URLs.
Installing
----------
Install package from pypi::
$ easy_install django-dburlresolvers
Put ``dbresolver`` into your installed applications::
INSTALLED_APPS = (
...
'dbresolver',
)
Change the project ``urls.py`` file like this::
from dbresolver import get_dbresolver_patterns
urlpatterns = patterns('',
... # your URLs
)
urlpatterns += get_dbresolver_patterns()
Usage
-----
Register some views of your project to get available in ``dbresolver``. You may
register it manually or automatically (by autodiscovering):
* Manually: Using the ``dbresolver`` API directly::
>>> from dbresolver import register_view
>>> from fooapp.views import foo_listing
>>> register_view(foo_listing, 'Foo listing')
* Automatically: Put this code in your project (we recommended in the project ``urls.py``)::
from dbresolver import autodiscover_views
autodiscover_views()
You need to define an especial ``views_to_register`` method, like ilustrate this example::
def foo_listing(request):
foo_list = FooModel.objects.all()
return render_to_response('fooapp/foo_listing.html',
{'foo_list': foo_list},
context_instance=RequestContext(request))
def views_to_register():
""" returns views to be registered with dbresolver """
return (
(foo_listing, _('Foo listing')),
)
Also you can register generic views with parameters. For example, imagine you
have a view like this::
def render_template(request, template_name=None):
try:
return direct_to_template(request, template=template_name)
except TemplateDoesNotExist:
raise Http404()
You may register the view with a parameter which be defined for admin user::
>>> from configfield import params
>>> register_view(render_template, 'Generic view to render a template',
params=(
params.Template(
name='template_name',
label='Template to be rendered',
),
))
If you want autoregistering of that view, the code was like this::
def views_to_register():
return (
{'view': render_template,
'label': 'Generic view to render a template',
'params': (
params.Template(name='template_name', label='Template to be rendered'),
)},
Now you only have to enter on admin site to create URL patterns attached to
views. You can use both Django `default regular expressions`_ and simpler
`surlex expressions`_.
.. _`default regular expressions`: http://docs.djangoproject.com/en/dev/topics/http/urls/
.. _`surlex expressions`: http://codysoyland.com/projects/surlex/documentation/
0.1.0-beta
----------
Fixed a model form error when used outside admin.
0.1.0-alpha
-----------
Initial version