2011-08-25 10 views
9

tengo una URL con un argumento optionnal:Cómo revertir url con argumentos de campos opcionales en django?

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

En mi plantilla que tiene un enlace:

{% url attribute_event calendar.id %} 

pero tengo un error que indica la dirección URL no se puede revertir con estos argumentos. ¿Debo usar 2 URL de entrada y nombres de URL?

Respuesta

6

sólo es posible si se divide en dos direcciones:

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

en la plantilla:

{% url attribute_event calendar.id %} 

or 

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

su punto de vista:

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

Hoo malditamente lo siento, de hecho, mi error fue en mi expresión regular, lo olvidé "?" como [-2] char ... ''schedule/(? P \ d +)/(?: mes (? P [\ +, \ -] \ d) /)? $' 'Así que no no necesita entradas múltiples – christophe31

+0

(Siempre que separe todos los argumentos en la plantilla incluso en Ninguno) – christophe31

Cuestiones relacionadas