Motivi Django e URL angolari
Domanda
A volte nel mio codice che passisco ottenere parametri con gli URL.Uno scenario particolare è se l'utente non è connesso, ma mette un URL per una pagina che richiede il login, sarà necessario prima di accedere.
In tal caso potrei avere un URL come: www.example.com/home/#/main/
.
La fine dell'URL /#/main/
è per angolare.Tuttavia, in Django quando faccio il seguente per ottenere il parametro next
sopra, lo faccio:
self.request.GET.get('next', self.redirect_url)
.
Il problema è che in questo caso, next
fornisce tutto tranne la parte angolare, quindi ottengo: www.example.com/home/
.
C'è comunque per ottenere anche la porzione rimanente dell'URL?
Soluzione
Devi urlencodica l'URL prima di aggiungerlo come parametro.Quindi si trasformerà in% 23 e non è più il separatore per l'ancoraggio, che viene gestito il lato client solo come Kvish descritto.
Altri suggerimenti
Apparentemente non puoi.Django non vede nemmeno l'ancora, è tutto gestito sul client (browser).
Come identificare un'ancora in un URL inDjango?
Il modo in cui ho aggirato questo è io uso jQuery per impostare un campo di input nascosto nella posizione di hash, che può essere ottenuta come:
window.location.hash
.
L'hash viene inviato con il modulo e posso portarlo da lì.