跳转到主要内容

基于Django的URL解析机制,该机制将URL模式存储在数据库中

项目描述

一个将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 中以使其可用。您可以通过手动或自动(通过自动发现)进行注册

  • 手动:直接使用 dbresolver API

    >>> 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'),
        )},

现在您只需进入管理员站点即可创建与视图相关联的URL模式。您可以使用Django 默认正则表达式 和更简单的 surlex表达式

0.1.0-beta

修复了在管理员外使用时的模型表错误。

0.1.0-alpha

初始版本

项目详情


下载文件

下载适合您平台文件的文件。如果您不确定选择哪一个,请了解更多关于 安装包 的信息。

源分布

django-dburlresolvers-0.1.0-beta2.tar.gz (11.7 kB 查看哈希值)

上传时间