endereço Modificar no Django middleware
-
12-09-2019 - |
Pergunta
Eu não sei se é possível, mas eu gostaria de adicionar alguns parâmetros no final do URL usando middleware. isso pode ser feito sem redirecionamento após modyfing URL solicitado?
ie. usuário clica: ... / some_link e middleware reescreve-lo para:? ... / some_link par1 = 1 & par2 = 2
Outra maneira é modificar reponse e substituir todos os links HTML, mas não é algo que eu gostaria de fazer.
Graças
Solução
Eu acho que isso realmente depende do seu problema e que exatamente você está tentando fazer.
Você não pode alterar a URL sem redirecionar o usuário, como você não pode modificar o URL em uma página sem uma recarga. Basicamente um redirecionamento é uma resposta informando o usuário para seguir em frente, não há nenhuma maneira de realmente mudar a URL. Note-se que mesmo se você fazê-lo em algo como JavaScript você basicamente fazer o mesmo como um redirecionamento, por isso não pode ser do lado do cliente ou servidor fazer.
Eu acho que poderia ajudar se você explicar-nos por que você precisa para passar esta informação através da URL. Por que não armazenar dados na sessão?
Eu acho que você poderia adicionar os dados para o objeto de solicitação, mas isso não adicioná-lo à URL.
Outras dicas
class YourRedirectMiddleware:
def process_request(self, request):
redirect_url = request.path+'?par1=1&par2=2'
return HttpResponsePermanentRedirect(redirect_url)
o que você está tentando realizar e por isso desta forma?
Você pode fazer o que quiser no middleware. Você tem acesso ao objeto do pedido, você pode obter o URL e redirecionamento para um novo se quiser.
A minha pergunta seria, por que você quer fazer isso? Se você precisa manter informações sobre a solicitação, o lugar adequado para fazer isso é na sessão.