2013-12-02 3 views
4

Предположим, это url, который принимает аргумент (здесь book_id) и передать значение в views:Джанго - URL без аргументов, чтобы принять значение по умолчанию

url(r'^/(?P<book_id>\w+)/$', 'pro.views.book', name='book'), 

Можно ли для URL который принимает аргумент, но если аргумент не задан, возьмите значение по умолчанию. Если возможно, это также может быть в views. Прошу прощения, если это хромой вопрос, но мне действительно нужно знать. Любая помощь или предложение будут благодарны. Спасибо

+0

из [документации] (https://docs.djangoproject.com/en/dev/topics/http/urls/#notes-on-capturing-text-in-urls) – alix

+0

Должно заглянуть в документы. Спасибо! – Aamu

ответ

11

Сделайте шаблон захвата дополнительным и не забудьте обработать конечную косую черту соответствующим образом. Я бы найти неловушечности группироваться вокруг группы захвата безопасный способ сделать это:

url(r'^(?:(?P<book_id>\w+)/)?$', 'pro.views.book', name='book'), 

Тогда в представлениях, объявить дефолт для аргумента:

def book(request, book_id='default'): 

Если вы обнаружите, что шаблон URL некрасиво, вы можете связать два регэкспы к одной и той же функции вида:

url(r'^(?P<book_id>\w+)/$', 'pro.views.book', name='book'), 
url(r'^$', 'pro.views.book', name='default_book'), 

После напоминания Аласдера, я снял ведущую косую черту. Я подумал, что это странно.

+0

+1, в том числе оба подхода, лично я предпочитаю два регулярных выражения – Alasdair

+0

Да, я обычно сам использую этот подход - хотя это отчасти только потому, что я обычно слишком ленив, чтобы обновить свою память при отсутствии синтаксиса группы. –

+0

Woah! Я бы никогда об этом не думал. Спасибо огромное! – Aamu

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