2011-07-05 39 views
12

Esto es simple y obvio, pero no puedo hacerlo bien:patrones de URL django con 2 parámetros

he declarado lo siguiente función de vista en urls.py

(r'^v1/(\d+)$', r'custom1.views.v1'), 

originalmente estaba pasando una un solo parámetro para la función de vista v1. Quiero modificarlo para pasar 2 parámetros. ¿Cómo declaro la entrada en urls.py para tomar dos parámetros?

Respuesta

11

que el supuesto de que la URL para que parezca v1/17/18 y obtener los dos parámetros 17 y 18, puede declarar el patrón como:

(r'^v1/(\d+)/(\d+)$', r'custom1.views.v1'), 

Asegúrese v1 acepta dos argumentos, además de la solicitud objeto:

def v1 (request, a, b): 
    # for URL 'v1/17/18', a == '17' and b == '18'. 
    pass 

el first example en el documentation about the URL dispatcher contiene varios patrones, la última de las cuales toman 2 y 3 parámetros.

9

En alguna parte de la línea adquirí el hábito de nombrarlos directamente en la expresión regular, aunque sinceramente no sé si hace la diferencia.

#urls: 
(r'^v1/(?P<variable_a>(\d+))/(?P<variable_b>(\d+))/$', r'custom1.views.v1') 

#views: 
def v1(request, variable_a, variable_b): 
    pass 

Además, es muy Django para poner fin a la URL con una barra final - Django Design Philosophy, FYI

Cuestiones relacionadas