Подтвердить что ты не робот

Внешнее перенаправление django с параметрами POST

Я пытаюсь создать перенаправление в представлении Django на внешний url с некоторыми параметрами получения, прикрепленными к запросу. После того, как я огляделся вокруг, и некоторые пытались вокруг, кажется, я ударил дорожный блок.

Итак, мой взгляд выглядит примерно так.

def view(request):
    data = get.data(request)
    if something in data:
        return HttpResponseRedirect('example.com')

Это насколько я мог получить. Я знаю, что вы в запросе url можете указать некоторые параметры, например:

...
return HttpResponseRedirect('example.com?name=smith&color=brown')

Однако, поскольку некоторые данные чувствительны, я не хочу, чтобы он попадал в URL-адрес. Поскольку это внешний url, я не могу использовать ярлык redirect(), который принимает параметры просмотров. Так молитесь, расскажите, как выполнить такую ​​задачу?

Edit

После того, как вы немного поглядели вокруг и немного побеседовали в IRC, кажется, что я должен делать, чтобы сохранить параметр get от пользователей, содержащий информацию о платежах, - это отправлять их вместо сообщения. Мне сказали, что вы должны это сделать, используя JS, возможно, jQuery. Вопрос до сих пор остается немного более сложным. Как можно было бы создать пост-перенаправление в django с помощью javascript?

2nd Edit

Похоже, я был дезинформирован. Thanx для устранения этого с помощью протоколов перенаправления DR. Похоже, что я пошел по неправильному пути в попытке использовать перенаправление для решения этой проблемы.

4b9b3361

Ответ 1

Предлагаю следующий подход. В форме просмотра/шаблона Django в браузере со всеми параметрами, которые вы хотите разместить в качестве скрытых элементов формы. Как только форма загрузится, JavaScript отправит форму (POST) туда, где вы захотите.

Вид:

from django.shortcuts import render_to_response

def view(request):
    return render_to_response('test.html', { 'foo': 123, 'bar': 456 })

Шаблон:

<html>
<head>
    <title>test</title>
     <script type="text/javascript">
     function load()
     {
          window.document.test.submit();
          return;
     }
     </script>
</head>
<body onload="load()">
<form name="test" method="post" action="http://www.example.com">
    <input type="hidden" name="foo" value={{ foo }} />
    <input type="hidden" name="bar" value={{ bar }} />
</form>
</body>
</html>

Ответ 2

Параметры GET всегда идут по URL-адресу, что делает их параметрами GET.

Невозможно перенаправить с использованием параметров POST (которые не входят в URL) - это ограничение HTTP, а не Django.

Ответ 3

Я не согласен с Даниэлем, есть способ ограничить HTTP перенаправлением только с помощью параметров get. о чем я думаю:

  • Перенаправить в пункт назначения GET с нужными параметрами.
  • На странице GET настройте форму с перенаправленными параметрами
  • Авто отправьте форму.

Это то, что делают большинство служб загрузки файлов, а иногда и даже страницы оплаты (Paypal и т.д.). это действительно немного уродливое (еще 1 прыжок), но имеет свои преимущества.