【问题标题】:How to set-up generic views in an application's urls.py?如何在应用程序的 urls.py 中设置通用视图?
【发布时间】:2011-06-21 14:39:48
【问题描述】:

假设我有一个项目的 urlconf,其中包括 myapp 的 urlconf:

urlpatterns = patterns('',
    (r'^myapp', include(myapp.urls)),
)

还有一个 myapp/urls.py 定义了一些路由:

urlpatterns = patterns('myapp.views',
    (r'^manager$', 'manager_view'),
)

我想在myapp 中使用通用视图(即显示项目列表),但如果我在myapp/urls.py 中这样定义它:

items_list = {
    'queryset': Item.objects.all(),
}

urlpatterns = patterns('myapp.views',
    (r'^manager$', 'manager_view'),
    (r'^items/(?P<page>[0-9]+)$', 'django.views.generic.list_detail.object_list',
        items_list),
)

由于myapp.views 前缀,这将不起作用。当然,我可以将通用视图模式放在项目的 urls.py 中,但是为应用单独设置一个 urls.py 将不再有意义。

那么如何在应用程序的 urlconf 中使用通用视图?

【问题讨论】:

    标签: python django django-generic-views urlconf


    【解决方案1】:

    您根本不需要使用前缀 - 您可以为每个 url 指定每个视图的完整路径:

    urlpatterns = patterns('',
        (r'^manager$', 'myapp.views.manager_view'),
        (r'^items/(?P<page>[0-9]+)$', 'django.views.generic.list_detail.object_list',
            items_list),
    )
    

    或者,您可以在单个 urlconf 中拥有多个 urlpattern,并将它们连接起来:

    urlpatterns = patterns('myapp.views',
        (r'^manager$', 'manager_view'),
    )
    
    urlpatterns += patterns('django.views.generic',
        (r'^items/(?P<page>[0-9]+)$', 'list_detail.object_list',
            items_list),
    )
    

    【讨论】:

    • 哦,没想到连接 2 个 urlpatterns,我傻了^^
    猜你喜欢
    • 2013-07-07
    • 1970-01-01
    • 1970-01-01
    • 2014-10-17
    • 2018-01-24
    • 2018-05-29
    • 2016-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多