2011-08-25 5 views
9

Mam url w optionnal argumentu:Jak odwrócić adres URL z opcjonalnymi argumentami pól w django?

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

w swoim szablonie mam link:

{% url attribute_event calendar.id %} 

Ale mam błąd mówiąc url nie można odwrócić z tymi argumentami. Czy muszę używać dwóch adresów URL i wyrażeń URL?

Odpowiedz

6

możliwe tylko jeśli podzielić ją na dwa adresy 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'), 
)  

w Szablon:

{% url attribute_event calendar.id %} 

or 

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

Twój widok:

def attribute_event(request, calendar_id, relative_month=None): 
    pass 
+1

Hoo, cholernie przepraszam, w rzeczywistości mój błąd był w moim regex, zapomniałem "?" jako [-2] char ... ''schedule/(? P \ d +)/(?: miesiąc (? P [\ +, \ -] \ d) /)? $'' Więc ja don Potrzebuję wielu wpisów. – christophe31

+0

(Tak długo, jak sepcify wszystkie argumenty w szablonie, nawet do None) – christophe31