2009-09-22 4 views
3

Я не знаю, возможно ли это, но я хотел бы добавить несколько параметров в конце URL-адреса с помощью промежуточного программного обеспечения. Можно ли это сделать без перенаправления после того, как запрошен URL-адрес модификации?Изменить адрес в промежуточном программном обеспечении Django

ie. пользователь щелкает: .../some_link и промежуточного программного обеспечения переписывает его: .../some_link par1 = 1 & par2 = 2

Другой способ заключается в изменении réponse и заменить все ссылки HTML, но это не то, что я d хотел бы сделать.

Благодаря

ответ

1

Я думаю, что это действительно зависит от вашей проблемы и того, что именно вы пытаетесь сделать.

Вы не можете изменить URL-адрес без перенаправления пользователя, так как вы не можете изменить URL-адрес на странице без перезагрузки. В основном перенаправление - это ответ, в котором пользователь должен двигаться дальше, и нет способа изменить URL. Обратите внимание, что даже если вы делаете это в JavaScript, вы в основном делаете то же самое, что и перенаправление, поэтому его нельзя выполнить на стороне клиента или сервера.

Я думаю, это может помочь, если вы объясните нам, почему вам нужно передать эту информацию по URL-адресу. Почему не хранить данные в сеансе?

Я думаю, вы могли бы добавить данные к объекту запроса, но это не добавит его в URL.

+0

Спасибо, наконец, это ясно для меня. – yezooz

4
class YourRedirectMiddleware: 

    def process_request(self, request): 
     redirect_url = request.path+'?par1=1&par2=2' 
     return HttpResponsePermanentRedirect(redirect_url) 

что вы пытаетесь достичь, и почему именно так?

+0

, но это перенаправление, которого я бы хотел избежать. Результат должен быть чем-то вроде oldschool, проходящего session_id в URL-адресе между запросами. Я вынужден сделать это следующим образом:/ – yezooz

+0

Вы должны быть осторожны с этим решением, как если бы у вас были данные POST, он будет потерян во время перенаправления. –

+0

объясните свои потребности, я не понимаю, почему вы хотите сделать это так – zalew

0

Вы можете делать все, что захотите, в промежуточном программном обеспечении. У вас есть доступ к объекту запроса, вы можете получить URL-адрес и перенаправить на новый, если хотите.

Мой вопрос будет, почему вы хотите это сделать? Если вам нужно сохранить информацию о запросе, то в этом месте будет подходящее место.

Смежные вопросы