Django重定向到自定义URL

时间:2012-09-07 23:07:36

标签: python ios django oauth-2.0 custom-url

从我的Django应用程序,如何将用户重定向到somescheme://someurl.com?

为了给你一些上下文以防它有用,我有一个用Python / Django编写的工作oauth2服务器,我需要允许用户注册具有自定义URL方案的redirect_uris。此自定义网址方案用于handling the redirect within native apps

我的第一反应是使用HttpResponseRedirect,但是这个URL有自定义方案而不是HTTP所以我猜这不是我想要的。提前感谢您提供任何建议。

编辑: 我试过这个,Django正确返回响应重定向而不会抛出错误,但浏览器不会重定向到此URL。我正在使用Chrome来测试它。

编辑2: HttpResponseRedirect在safari中运行良好。

2 个答案:

答案 0 :(得分:17)

实际上不应该有效,因为出于安全原因,Django默认只允许重定向到httphttpsftp

https://www.djangoproject.com/weblog/2012/jul/30/security-releases-issued/

我遇到了与OAuth相同的问题并重定向到自定义方案 Django(在Apache上)在重定向到自定义方案时抛出500(django.core.exceptions.SuspiciousOperation)。解决方案是创建自己的HttpResponseRedirect子类或只执行:

location = < your redirect URL >
res = HttpResponse(location, status=302)
res['Location'] = location
return res

答案 1 :(得分:4)

  

类HttpResponseRedirect

     

构造函数的第一个参数是必需的 - 重定向到的路径。这可以是完全限定的URL(例如'http://www.yahoo.com/search/')或没有&gt;域的绝对路径(例如'/ search /')。有关其他可选构造函数参数,请参阅HttpResponse。注意&gt;这会返回HTTP状态代码302。

这是从这里来的: https://docs.djangoproject.com/en/dev/ref/request-response/

无论如何,它应该从我正在阅读的内容中发挥作用。