Estoy escribiendo una aplicación Django con una URL como 'http: // localhost/entidad/id/superposición = other_id'. Donde id es la clave primaria de la entidad particular y la superposición es un parámetro de consulta opcional para una segunda entidad que se superpone en la pantalla. El usuario solo puede actualizar una entidad cuando visualiza objetos a través de una superposición. Cuando se realiza la transferencia a/update/id, quiero volver a dirigirme a/entity/id, pero no quiero perder mi parámetro de consulta durante el redireccionamiento, ya que el cambio en la vista sería discordante.Django redirigir usando inversa() a una dirección URL que se basa en las cadenas de consulta
Por ejemplo, Tengo el siguiente en mi url.py:
...
(r'^update/(?P<id>.+)/(?P<overlay_id>.+)/$', 'update'),
(r'^entity/(?P<id>.+)/$', 'view'),
...
Debido a que se requiere overlay_id cuando se actualiza, es parte de la URL, no es un parámetro de consulta. En la vista django quiero redirigir después de una POST exitosa y usar reverse() para evitar hacer referencia a las URL en mi código python. La idea general es:
return HttpResponseRedirect(
reverse('views.view',
kwargs={
'id': id,
},
)
)
Pero, ¿cómo puedo pasar el parámetro de mi consulta a la inversa?
Gracias, Craig
Sí, me di cuenta de esto mientras me lavaba los dientes hace un segundo. A veces deseo que Python tuviera firmas de tipo, ya que esto hubiera sido obvio si se declarase reverse() para devolver una cadena. Gracias. –
Por lo general, obtengo esos momentos ah ah en la ducha a la mañana siguiente. Puede encontrar que pdb (o ipdb) ayuda en los casos en los que desea firmas de tipo. Intenta lanzar 'import pdb; pdb.set_trace() 'en su código en algún momento. http://docs.python.org/library/pdb.html – istruble