padrões de URL Django e angular
Pergunta
Às vezes, no meu código, passo parâmetros get com URLs.Um cenário específico é se o usuário não estiver logado, mas colocar uma URL para uma página que requer login, ele será solicitado a fazer login primeiro.
Nesse caso, posso ter um URL como: www.example.com/home/#/main/
.
O fim do URL /#/main/
é para angular.No entanto, no Django, quando faço o seguinte para obter o next
parâmetro acima, eu faço isso:
self.request.GET.get('next', self.redirect_url)
O problema é que neste caso, next
fornece tudo, menos a parte angular, então obtenho: www.example.com/home/
.
Existe alguma maneira de obter também a parte restante do URL?
Solução
Você deve codificar o url antes de adicioná-lo como parâmetro.Em seguida, ele se transformará em% 23 e não será mais o separador da âncora, que é tratado no lado do cliente apenas conforme descrito pelo KVISH.
Outras dicas
Aparentemente você não pode.Django nem vê a âncora, tudo é tratado no cliente (navegador).
Como identificar uma âncora em uma url no Django?
A maneira de contornar isso é usar jQuery para definir um campo de entrada oculto para o local do hash, que pode ser obtido da seguinte forma:
window.location.hash
O hash é enviado com o formulário e posso retirá-lo a partir daí.