基于django的url解析机制,将url模式存储在数据库中
django-dburlresolvers的Python项目详细描述
一个url解析器,它将url模式存储在数据库中,这意味着网站管理员可以定义一些url。
安装
从pypi安装包:
$ easy_install django-dburlresolvers
将dbresolver放入已安装的应用程序:
INSTALLED_APPS = ( ... 'dbresolver', )
更改项目urls.py文件,如下所示:
from dbresolver import get_dbresolver_patterns urlpatterns = patterns('', ... # your URLs ) urlpatterns += get_dbresolver_patterns()
用法
注册项目的某些视图,以便在dbresolver中可用。你可以 手动或自动注册(通过自动发现):
手动:直接使用dbresolverapi:
>>> from dbresolver import register_view >>> from fooapp.views import foo_listing >>> register_view(foo_listing, 'Foo listing')
自动:将此代码放入项目中(我们在项目中建议使用urls.py):
from dbresolver import autodiscover_views autodiscover_views()
您需要定义一个特殊的views_to_register方法,如下面的示例:
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')), )
还可以使用参数注册泛型视图。例如,想象你 有这样的视图:
def render_template(request, template_name=None): try: return direct_to_template(request, template=template_name) except TemplateDoesNotExist: raise Http404()
您可以使用为管理员用户定义的参数注册视图:
>>> 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', ), ))
如果要自动注册该视图,代码如下:
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'), )},
现在您只需在管理站点上输入即可创建附加到 意见。您可以同时使用djangodefault regular expressions和simpler surlex expressions。
0.1.0-β
修复了在管理外使用时的模型窗体错误。
0.1.0-α
初始版本