Foros del Web » Programando para Internet » Python »

Enviar dos parametros (id+titulo) en una url

Estas en el tema de Enviar dos parametros (id+titulo) en una url en el foro de Python en Foros del Web. En mi template tengo: Código: {% url video_detalle dato.id dato.titulo %}"> Y en mi urls.py: Cita: url(r'^detalle/(?P<id_con>\d+)/(?P<tit_con>\d+)/$', 'aplicacion.views.detalle', name='video_detalle'), Mi intencion es enviar dos parametros, ...
  #1 (permalink)  
Antiguo 03/10/2012, 22:34
 
Fecha de Ingreso: marzo-2007
Mensajes: 340
Antigüedad: 17 años, 1 mes
Puntos: 4
Enviar dos parametros (id+titulo) en una url

En mi template tengo:

Código:
{% url video_detalle dato.id dato.titulo %}">
Y en mi urls.py:

Cita:
url(r'^detalle/(?P<id_con>\d+)/(?P<tit_con>\d+)/$', 'aplicacion.views.detalle', name='video_detalle'),

Mi intencion es enviar dos parametros, titulo y id.

Pero no se como ponerlos en el template y si esta bien armada la regla en urls.

gracias !
  #2 (permalink)  
Antiguo 03/10/2012, 22:41
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años
Puntos: 1360
Respuesta: Enviar dos parametros (id+titulo) en una url

No, no esta bien armada. La vista la pasas por medio de un string con el nombre de la app y donde esta guardada la vista y los parámetros si son los datos en si.

Código Python:
Ver original
  1. {% url 'aplicacion.views.detalle' dato.id dato.titulo %}

Checar la documentación
  #3 (permalink)  
Antiguo 04/10/2012, 01:11
 
Fecha de Ingreso: marzo-2007
Mensajes: 340
Antigüedad: 17 años, 1 mes
Puntos: 4
Respuesta: Enviar dos parametros (id+titulo) en una url

El problema esta en la url o en la separacion de los dos parametros, no se bien como es la forma correcta.

Pero lo que me marcas no es un problema, si uso video_detalle estoy referenciando justamente aplicacion.views.detalle, de esa forma si hago un cambio en urls.py no tengo que modificar el template.

Si utilizo solo id anda perfecto, pero quiero poder enviar el titulo para que quede en la url.

Saludos y gracias.
  #4 (permalink)  
Antiguo 04/10/2012, 01:27
 
Fecha de Ingreso: marzo-2007
Mensajes: 340
Antigüedad: 17 años, 1 mes
Puntos: 4
Respuesta: Enviar dos parametros (id+titulo) en una url

Ya lo solucione:

Cita:
url(r'^detalle/(?P<id_con>\d+)/(?P<tit_con>.*)/$', 'aplicacion.views.detalle', name='video_detalle'),
Y en views:

Cita:
def detalle(request, id_con, tit_con):
Ahora mi pregunta, que funcion nativa tiene django para realizar un encode de la variable titulo ? ya que me veo obligado a convertir el string para remover espacios, caracteres especiales, etc.
  #5 (permalink)  
Antiguo 04/10/2012, 09:58
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años
Puntos: 1360
Respuesta: Enviar dos parametros (id+titulo) en una url

Recuerda que python es un lenguaje interpretado y es dinámico. Entonces dato.id dato.titulo pueden tener cualquier valor, si no coincide en tu expresión regular es por que probablemente no sea el tipo de dato adecuado.

Por ejemplo asumo que id es de tipo numérico (por que dices que funciona), pero titulo no me suena a que no siempre es un valor numérico (ten cuidado en tu vista).

Otra cosa es que no te recomiendo usar (.*) a menos que sepas bien lo que esto implica, tanto como en el urlConf como en la expresión regular.

Por ultimo, agrega contexto a tus preguntas, mensajes de error, que es lo que obtienes, que es lo que esperas y las dependencias que tengas relacionado al problema. Por que estar adivinando cual podría ser tu problema no es muy efectivo, ni para ti, ni para la comunidad que te podría ayudar.
  #6 (permalink)  
Antiguo 04/10/2012, 22:38
 
Fecha de Ingreso: marzo-2007
Mensajes: 340
Antigüedad: 17 años, 1 mes
Puntos: 4
Respuesta: Enviar dos parametros (id+titulo) en una url

Gracias por tu respuesta en ambos posts.

Sere mas claro de ahora en mas.

Etiquetas: parametros, template, url
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:14.