У меня есть шаблон URL-адресов:
urlpatterns = (
url(r'^$', list_titles, name='list'),
url(r'^(?P<tag>[a-z\-0-9]+?)/$', list_titles, name='filtered-list'),
url(r'^(?P<title>\S+?)/$', show_title, name='title'),
)
filtered-list
и title
соответствуют тем же вещам.
Если есть доступный список вещей, соответствующих tag
в filtered-list
, я хочу, чтобы list_titles
срабатывал. Но если нет подходящего tag
, я хочу, чтобы он возвращался к процессору URL-адреса, поэтому show_title срабатывает.
Если нет соответствующего заголовка, я подниму там 404.
У меня такое чувство, что это может иметь какое-то отношение к сигналам... Но я никогда не использовал их раньше, поэтому я мог бы полностью отключиться от этого =)
Примечание. Я знаю, что могу сделать это изнутри представления... Но это немного вонючий, чтобы жестко связать процесс с представлением. Я бы хотел, чтобы URL-адрес определил, что выбирается первым и что он передает.
Изменить: Я идиот.
Это именно то, что происходит по умолчанию! Пока вы правильно соответствуете. У моего метода show_title
отсутствовал его аргумент title
, поэтому третий URL-адрес не передавался должным образом.
Хорошо, так немного измененный вопрос: зная теперь, что в него встроена обработка исключений, было бы более эффективным для меня передать запрос вручную show_title
(из list_titles
, или это будет, на балансе, лучше оставить URL-адреса, обрабатывающие вещи?
Edit2: Месть идиот
Оказывается, это не делает этого вообще. Я случайно изменил первый шаблон, чтобы он не совпадал, и подумал, что он отдает подробный вид. Боюсь, что один из тех дней.