Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/09/2013, 09:00
Avatar de Gguer
Gguer
 
Fecha de Ingreso: abril-2009
Mensajes: 125
Antigüedad: 15 años, 7 meses
Puntos: 1
Django: Problema con patrón de regex cuando utilizo varias URL con el mismo patrón

Hola a todos.

Soy un novato en Django y Python, ayer me encontré con este problema:

Tengo varias URL con formato de slugs, pero el patrón de la expresión regular que utilizo,
Código:
(?P<slug_categoria>[\w-]+)
, causa conflicto cuando tengo más de una url. El navegador no sabe a cuál de todas las URL registradas debe enviar la petición (bueno, en realidad toma el primer elemento que coincida con el patrón), porque realmente todas aceptan el mismo formato.

Éstas son tres URL en mi archivo urls.py:

Código Python:
Ver original
  1. url(r'^(?p<slug_etiqueta>[\w-]+)/$', views.categoria, 'name=categoria'),
  2. url(r'^(?p<slug_categoria>[\w-]+)/$', views.categoria, 'name=categoria'),
  3. url(r'^(?p<slug_depto>[\w-]+)/$', views.departamento, 'name=departamento'),

Me gustaría que mis URL quedaran en este formato:

Código:
categoria: /productos/baterias-acusticas
etiqueta: /productos/set-de-bateria-acustica
departamento: /productos/baterias-y-percusion
Pero cuando se envía la petición, la URL que recibe slug_etiqueta es la primera que se llama, porque es la primera que coincide con el patrón [\w-]+.

Para que funcionara cada URL, las configuré de esta manera:

Código:
etiqueta: /productos/etiqueta/set-de-bateria-acustica
categoria: /productos/categoria/baterias-acusticas
departamento: /productos/departamento/baterias-y-percusion
Pero francamento quisiera evitar ese espacio extra, porque me gusta mucho cómo lucen en la primera forma. De cualquier manera este problema creo que va a volverme a pasar porque suena muy común. ¿Alguno de ustedes ha psado por esto? ¿Cómo pudo solucionarlo?

Un saludo :)

Última edición por Gguer; 22/09/2013 a las 09:03 Razón: Título más apropiado