Изменить адрес в промежуточном программном обеспечении Django
-
12-09-2019 - |
Вопрос
Я не знаю, возможно ли это, но я хотел бы добавить несколько параметров в конце URL-адреса, используя промежуточное программное обеспечение.Можно ли это сделать без перенаправления после изменения запрошенного URL?
т. е.клики пользователя:.../some_link и промежуточное программное обеспечение переписывает его в:.../some_link?par1=1&par2=2
Другой способ - изменить reponse и заменить каждую HTML-ссылку, но это не то, что я хотел бы делать.
Спасибо
Решение
Я думаю, это действительно зависит от вашей проблемы и от того, что именно вы пытаетесь сделать.
Вы не можете изменить 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-адрес и перенаправить на новый, если хотите.
Мой вопрос был бы таков: почему вы хотите это сделать?Если вам нужно сохранить информацию о запросе, подходящее место для этого - в сеансе.