Как можно уменьшить количество конфигов переписывания URL в Django - PullRequest
1 голос
/ 28 июня 2011

У меня есть этот список в 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 ]

4 голосов
/ 28 июня 2011

Я бы предпочел оставить все как есть, чтобы вы могли четко видеть URL вашего сайта (и каждый список может иметь имя для использования с {% 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

Я думаю, что то, что у тебя есть, лучше всего.

0 голосов
/ 28 июня 2011

Вы можете объединить свои термины в регулярном выражении, используя символ ИЛИ, который разработан символом трубы.Примерно так: (r '^ (книга | автор | издатель | магазин) / list / $', list_detail.object_list, shop_info),

Я предполагаю, что вы не хотите использовать подстановочный знакхарактер.

...