重定向到另一个域的 Django 视图

Posted

技术标签:

【中文标题】重定向到另一个域的 Django 视图【英文标题】:Django view that redirects to another domain 【发布时间】:2018-10-19 23:18:06 【问题描述】:

如何使用 python django 重定向到另一个域并传递附加信息?

例如,我想重定向到 https://ssl.dotpay.pl/test_payment/ 并提供其他信息,因此 url 看起来像这样 https://ssl.dotpay.pl/test_payment/?id=123456&amount=123.00&description=Test 但我不想在我的视图中生成 url,只需以 json 或类似的方式传递数据。

这样做的方法是什么?

【问题讨论】:

你能澄清一下“我不想在我的视图中生成 url,只需在 json 中传递数据”的意思吗? 这是生成的 url,我的意思是 'ssl.dotpay.pl/test_payment/?id=123456&amount=&description='.format(123.00, 'Test') 好的,所以您希望您的视图重定向到该网址,而不显示任何其他内容? 不,我希望我的视图重定向到另一个不是我的域,但给这个域一些参数。ssl.dotpay.pl/s2/login/cloudfs1/magellan_media/common_file/… 我想要实现的是 1.3 '定向版本' 【参考方案1】:

这是生成的 url,我的意思是 'ssl.dotpay.pl/test_payment/?id=123456&amount=&description='.format(123.00, 'Test')

请务必在您的网址前添加协议(或至少两个斜杠)。 这样,Django 会将其视为绝对路径。 从您的评论看来,您重定向到 ssl.dotpay.pl 将被视为本地路径而不是另一个域。

这是我遇到的。 (见question我放了***和answer)

因此,在您的情况下,您可以使用以下内容:

class MyView(View):
    def get(self, request, *args, **kwargs):
        url = 'https://ssl.dotpay.pl/test_payment/'
              '?id=123456&amount=&description='.format(123.00, 'Test')
        return HttpResponseRedirect(url)

您也可以使用django.shortcuts 中的redirect 而不是HttpResponseRedirect

【讨论】:

【参考方案2】:

假设您使用的是功能视图,您可能会在视图中执行以下操作:

from django.http import HttpResponseRedirect

def theview(request):
    # your logic here
    return HttpResponseRedirect(<theURL>)

【讨论】:

以上是关于重定向到另一个域的 Django 视图的主要内容,如果未能解决你的问题,请参考以下文章

django 重定向到另一个带有上下文的视图

Django之重定向

django 重定向到查看

在 Django 1.6 中使用另一个 url slug 从视图重定向到另一个 html 页面

重定向到视图时的 Django NoReverseMatch

将子域重定向到另一个域的文件夹