2012-12-11 3 views
2

У меня есть URL-адрес, в котором я хотел бы сделать статус-токен необязательным. Если токен статуса не указан в URL-адресе, я даю значение по умолчанию в аргументе метода представления. Я попытался заменить токен на этот (?:/(?P<status>\d+))?$, но, похоже, не работает. БлагодаряDjango: Как я могу сделать часть URL необязательной

url(r'^(?P<status>\d+)/$', frequest_list, name="frequest_list"), 

def request_list(request, status=1): 
... 
... 

Update: Это был образец, который я пытался:

Так что, если я пытаюсь localhost/features/ хорошо работает

Но если я localhost/features/1/ он не

+0

Почему это не работает? Я использую тот же единственный url, необязательный метод захвата. – jdi

+0

Это дает мне 404, что ни один из URL-адресов не соответствует. Я что-то упустил? –

+0

Можете ли вы опубликовать точные образцы, которые вы пробовали? – jdi

ответ

3

Just создайте вторую запись URL-адреса, которая вызывает тот же вид:

url(r'^features/$', frequest_list, name="frequest_list_default"), 
url(r'^features/(?P<status>\d+)/$', frequest_list, name="frequest_list"), 
+0

На самом деле я хочу добавить несколько дополнительных фильтров, поэтому, избегая этого –

1

В некоторых моих проектах я использую отдельные URL-адреса, и они отлично работают. Возможно, вы захотите настроить свой шаблон, чтобы сделать дополнительный / необязательным. Я думаю, это то, что заставляет ваш URL не совпадать. Джанго действительно есть настройки «APPEND_SLASH» BOOL, который добавит, что на ваших URL-адресов, если они отсутствуют его и не соответствуют друг другу:

url(r'^features(?:/(?P<status>\d+))?/?$', frequest_list, name="frequest_list") 

Дополнительный /, вероятно, может быть записано так:

url(r'^features/?(?:(?P<status>\d+)/?)?$', frequest_list, name="frequest_list") 
+0

Если я попробую первый, я получаю ту же ошибку 404. Где, как и во втором случае, он отображается как __nothing to repeat__ –

+0

Я удаляю часть __features__ в url. Обновленный вопрос, пожалуйста, посмотрите. –

+0

Я использую тот же самый первый шаблон в своем собственном коде, и он отлично работает. Не уверен, где это будет неправильно для вас. – jdi

Смежные вопросы