1

我在 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),
4

2 回答 2

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

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

于 2011-06-28T19:14:51.363 回答
0

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

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

于 2011-06-28T18:50:12.957 回答