Django Middleware에서 주소를 수정하십시오
-
12-09-2019 - |
문제
가능한지 모르겠지만 Middleware를 사용하여 URL의 끝에 몇 가지 매개 변수를 추가하고 싶습니다. Modyfing이 요청한 후 리디렉션없이 수행 할 수 있습니까?
즉. 사용자 클릭 : .../some_link 및 미들웨어를 다시 작성합니다 : .../some_link? par1 = 1 & par2 = 2
다른 방법은 반응을 수정하고 모든 HTML 링크를 교체하는 것이지만, 내가하고 싶은 것이 아닙니다.
감사
해결책
나는 이것이 실제로 당신의 문제와 당신이 정확히 무엇을하려고하는지에 달려 있다고 생각합니다.
Reload없이 페이지에서 URL을 수정할 수 없으므로 사용자를 리디렉션하지 않으면 URL을 변경할 수 없습니다. 기본적으로 리디렉션은 사용자에게 계속 진행하도록 지시하는 응답입니다. 실제로 URL을 변경할 방법이 없습니다. JavaScript와 같은 작업을 수행하더라도 기본적으로 리디렉션과 동일하므로 클라이언트 또는 서버 측을 수행 할 수 없습니다.
URL을 통해이 정보를 전달 해야하는 이유를 설명하면 도움이 될 수 있다고 생각합니다. 세션에 데이터를 저장하지 않겠습니까?
요청 객체에 데이터를 추가 할 수는 있지만 URL에 추가되지는 않습니다.
다른 팁
class YourRedirectMiddleware:
def process_request(self, request):
redirect_url = request.path+'?par1=1&par2=2'
return HttpResponsePermanentRedirect(redirect_url)
당신은 무엇을 성취하려고 노력하고 있으며 왜 이런 식으로?
미들웨어에서 원하는대로 할 수 있습니다. 요청 객체에 액세스 할 수 있으며 원하는 경우 URL을 가져 와서 새로 리디렉션 할 수 있습니다.
내 질문은 왜 이렇게하고 싶습니까? 요청에 대한 정보를 유지 해야하는 경우이 작업을 수행하기에 적절한 장소는 세션에 있습니다.