Foros del Web » Programando para Internet » Python »

Url con parametros opcionales Django

Estas en el tema de Url con parametros opcionales Django en el foro de Python en Foros del Web. Hola a ver si me pueden ayudar estoy tratando de crear una url para una view que tiene dos parámetros, pero no se como hacerle ...
  #1 (permalink)  
Antiguo 12/09/2013, 17:47
 
Fecha de Ingreso: julio-2006
Mensajes: 56
Antigüedad: 17 años, 8 meses
Puntos: 0
Información Url con parametros opcionales Django

Hola a ver si me pueden ayudar estoy tratando de crear una url para una view que tiene dos parámetros, pero no se como hacerle para decirle que los parametros son opcionales.
Lo que estoy intentando hacer es un pequeño buscador que de hecho ya me funciona a la perfección pero la url esta sucia.

Aqui mis urls como están actualmente:
127.0.0.1/clientes/?terms=juan+perez&page=2 (busqueda con resultados paginados)
127.0.0.1/clientes/?terms=juan+perez (busqueda con resultados sin necesidad de paginar)
127.0.0.1/clientes/ (listado de todos)

Y quiero que quede del tipo: 127.0.0.1/clientes/juan+perez/pagina/2

Saludos y gracias por sus respuestas
  #2 (permalink)  
Antiguo 12/09/2013, 18:02
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Url con parametros opcionales Django

En lo personal no se me hace sucia esa url.

Diferentes problemas necesitan diferentes métodos eso es todo. Probablemente si puedas hacerlo por urls amigables, pero va a ser mas tedioso porque vas a tener que generar la url del lado del cliente, ya que el form por defecto te genera el query string.
  #3 (permalink)  
Antiguo 12/09/2013, 18:03
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 16 años, 1 mes
Puntos: 1329
Respuesta: Url con parametros opcionales Django

La forma fácil:

Código Python:
Ver original
  1. url(r"^clientes/$", tuvista),
  2. url(r"^clientes/(?P<cliente>[^/]+)/$", tuvista),
  3. url(r"^clientes/(?P<cliente>[^/]+)/pagina/(?P<pagina>[^/]+)/$", tuvista)

Siendo tu vista algo así:

Código Python:
Ver original
  1. def tuvista(request, cliente=None, pagina=None):
  2.     ...

Saludos
__________________
Grupo Telegram Docker en Español
  #4 (permalink)  
Antiguo 12/09/2013, 18:22
 
Fecha de Ingreso: julio-2006
Mensajes: 56
Antigüedad: 17 años, 8 meses
Puntos: 0
Respuesta: Url con parametros opcionales Django

Pues ahora lo raro esta en que al poner mivista(cliente=None, pagina=None) nunca cambian los valores por defecto, le paso por url un valor a cliente y nada lo mismo me pasa con pagina :(
Que puede ser?
  #5 (permalink)  
Antiguo 13/09/2013, 08:00
 
Fecha de Ingreso: julio-2006
Mensajes: 56
Antigüedad: 17 años, 8 meses
Puntos: 0
Respuesta: Url con parametros opcionales Django

Pues descubri que al pasar variables por la url en el formato común hace que los parametros de la vista no tomen valores, únicamente se puede acceder a los varoles que se pasar por la url directamente desde el reques.GET['valor'].

Si se quiere que los valores de la vista se carguen a fuerza se tiene que definir una url.

Se los comento nada mas para que tengan en consideración.
  #6 (permalink)  
Antiguo 17/04/2014, 10:47
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Url con parametros opcionales Django

Que pena... pregunte en el lugar equivocado!!!! aun no entiendo como borrar un mensaje sin respuesta aun!!!

------------------------------------------
Esto que comentan de =None (parametros opcionales) me da un error al procesar el None:

Cita:
TypeError at /hello/
Can't convert 'NoneType' object to str implicitly
O sea... como se opera con None ? veo que es distino a en PHP donde al concatenar con NULL no produce ningun tipo de fallo:

Código:
def hello(request,name=None):	
	return HttpResponse("Hola "+name)
La unica forma es andar preguntando que si es None ?

Código Python:
Ver original
  1. def hello(request,name=None):  
  2.     if name is None:
  3.         return HttpResponse("Hola quien seas!")
  4.     else:
  5.         return HttpResponse("Hola "+name)

Ya me dio cargo de culpa preguntar...... empiezo a ver que desvirtua el tema....... si quieren borran mi comentario (en principio no le vi nada de malo)
__________________
Salu2!

Última edición por Italico76; 17/04/2014 a las 10:55
  #7 (permalink)  
Antiguo 22/04/2014, 06:54
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Url con parametros opcionales Django

Usa str(name) y obtendrás "None", aunque quizás lo mejor sea usar formato de cadenas:
Código Python:
Ver original
  1. return HttpResponse("Hola %s!" % name)
algo como lo siguiente puede ser lo ideal:
Código Python:
Ver original
  1. if not name:
  2.     name = 'quien seas'
  3.  
  4. return HttpResponse("Hola %s!" % name)

Etiquetas: django
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 01:15.