如何在Django远程发布到iframe时重定向整个页面

时间:2014-02-28 16:57:11

标签: django iframe paypal

我正在我的django网站上使用Paypal支付高级嵌入式/托管结帐页面。我为paypal付款页面显示iframe,我提交请求,然后将其发回我的网站。

处理paypal响应的视图使用

response = redirect("shop_complete")
return response

但是这会使我的整个响应页面在iframe中弹出。我可以使用一个在那个地方看起来很好的模板,但我想同时更新购物车和付款步骤。反正有没有让响应重定向整个浏览器而不仅仅是框架?

1 个答案:

答案 0 :(得分:0)

所以,我的解决方案最终是添加一个完全由脚本组成的中间页面来重定向浏览器的顶层。我从

获得了这个脚本

JavaScript post request like a form submit

<body>

<script type="text/javascript">
function post_to_url(path, params, method) {
    method = method || "post"; // Set method to post by default if not specified.

    // The rest of this code assumes you are not using a library.
    // It can be made less wordy if you use one.
    var form = document.createElement("form");
    form.setAttribute("method", method);
    form.setAttribute("action", path);
    form.setAttribute("target", "_top" )

    for(var key in params) {
        if(params.hasOwnProperty(key)) {
            var hiddenField = document.createElement("input");
            hiddenField.setAttribute("type", "hidden");
            hiddenField.setAttribute("name", key);
            hiddenField.setAttribute("value", params[key]);

            form.appendChild(hiddenField);
         }
    }

    document.body.appendChild(form);
    form.submit();
};
 window.onload = post_to_url('{% url "shop_paypal_redirect" %}', 
         {csrfmiddlewaretoken: '{{ csrf_token }}',
          result: '{{ result }}'});
</script>
</body>