如何减少Django中URL重写配置的数量

时间:2011-06-28 18:45:28

标签: django url django-generic-views

我在django中有这个列表。这看起来很相似。有没有办法从这四行中划出一行

(r'^book/list/$', list_detail.object_list, book_info),
(r'^author/list/$', list_detail.object_list, author_info),
(r'^publisher/list/$', list_detail.object_list, publisher_info),
(r'^shop/list/$', list_detail.object_list, shop_info),

2 个答案:

答案 0 :(得分:4)

我更愿意保留它,因此您可以清楚地看到您网站的网址(并且每个列表都可以使用{%url%}的名称,但也许您可以执行以下操作:

(r'^(?P<model>\w+)/list/$', list_detail.object_list)

然后在views.py中:

def object_list(request, model):
    if model == 'books':
        return books_list(request)

def books_list(request):
    # whatever

我认为你拥有的是最好的。

答案 1 :(得分:0)

您可以使用由管道符号设计的OR字符在正则表达式中组合您的术语。像这样的东西: (r'^(book | author | publisher | shop)/ list / $',list_detail.object_list,shop_info),

我假设您不想使用通配符。