Django y patrones de URL angulares.
Pregunta
A veces, en mi código paso parámetros get con URL.Un escenario particular es que si el usuario no ha iniciado sesión, pero ingresa una URL para una página que requiere iniciar sesión, se le pedirá que inicie sesión primero.
En ese caso puedo tener una URL como: www.example.com/home/#/main/
.
El final de la URL /#/main/
es para angular.Sin embargo, en Django cuando hago lo siguiente para obtener el next
parámetro anterior, hago esto:
self.request.GET.get('next', self.redirect_url)
El problema es que en este caso next
proporciona todo menos la porción angular, entonces obtengo: www.example.com/home/
.
¿Existe alguna forma de obtener también la parte restante de la URL?
Solución
Debe codificar la URL antes de agregarla como parámetro.Luego se convertirá en %23 y ya no será el separador para el ancla, que se maneja en el lado del cliente solo como se describe en KVISH.
Otros consejos
Aparentemente no puedes.Django ni siquiera ve el ancla, todo se maneja en el cliente (navegador).
¿Cómo identificar un ancla en una URL en Django?
La forma en que solucioné esto es que uso jQuery para establecer un campo de entrada oculto en la ubicación del hash, que se puede obtener así:
window.location.hash
El hash se envía con el formulario y puedo tomarlo desde allí.