2011-08-25 13 views
9

Ho un URL con un argomento Optionnal:Come invertire l'url con argomenti campi facoltativi in ​​django?

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

Nel mio modello ho un link:

{% url attribute_event calendar.id %} 

Ma ho un errore che dice l'URL non può essere invertito con questi argomenti. Devo usare 2 url regex entry e nomi di URL ?!

risposta

6

possibile solo se si divide in due indirizzi:

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'), 
)  

nel modello:

{% url attribute_event calendar.id %} 

or 

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

vostra vista:

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

Hoo maledetto scusa, infatti il ​​mio errore era nella mia espressione regolare, ho dimenticato "?" come [-2] char ... ''schedule/(? P \ d +)/(?: month (? P [\ +, \ -] \ d) /)? $' 'So I don 'ho bisogno di più voci. – christophe31

+0

(Fintanto che sepcifico tutti gli argomenti nel modello anche su Nessuno) – christophe31

Problemi correlati