如何在django中使用可选字段参数反转url?

时间:2011-08-25 12:11:21

标签: django django-urls

我有一个带有optionnal参数的网址:

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 %}

但我有一个错误,说这些arg不能反转url。我必须使用2个url正则表达式和url名称吗?!

2 个答案:

答案 0 :(得分:6)

只有在将其拆分为两个网址时才有可能:

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

答案 1 :(得分:2)