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

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top