Как отменить URL с необязательными полями аргументов в Django? - PullRequest
9 голосов
/ 25 августа 2011

У меня есть URL с необязательным аргументом:

urlpatterns = patterns(
    'my_app.views',
    url('schedule/(?P<calendar_id>\d+)/(?:month(?P<relative_month>[\+,\-]\d)/)$',
    'attribute_event',name='attribute_event')
)

В моем шаблоне у меня есть ссылка:

{% url attribute_event calendar.id %}

Но у меня есть ошибка, связанная с невозможностью обращения URL-адреса с помощью этих аргументов. Должен ли я использовать 2 регулярные выражения URL и имена URL?!

Ответы [ 2 ]

6 голосов
/ 25 августа 2011

возможно только если вы разделите его на два URL:

urlpatterns = patterns('my_app.views',
    url('schedule/(?P<calendar_id>\d+)/month(?P<relative_month>[\+,\-]\d)/$',
        'attribute_event', name='attribute_event_relative'),
    url('schedule/(?P<calendar_id>\d+)/)$', 
        'attribute_event', name='attribute_event'),
)    

в шаблоне:

{% url attribute_event calendar.id %}

or

{% url attribute_event_relative calendar.id '+1' %}

Ваш взгляд:

def attribute_event(request, calendar_id, relative_month=None):
    pass
2 голосов
/ 15 февраля 2012

Должен быть этот билет:

https://code.djangoproject.com/ticket/9176

...