Djangoredirect到自定义URL

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

为了给你一些上下文,以防万一它有帮助,我有一个用Python / Django编写的工作oauth2服务器,我需要允许用户注册具有自定义URLscheme的redirect_uris。 此自定义urlscheme用于处理本机应用程序内的redirect 。

我的第一反应是使用HttpResponseRedirect,但这个url有一个自定义的scheme,不是HTTP,所以我猜这不是我想要的。 预先感谢您提供的任何build议。

编辑:我没有尝试这个和Django正确返回响应redirect没有抛出一个错误,但浏览器不redirect到这个URL。 我正在使用Chrome来testing。

编辑2:HttpResponseRedirect在Safari浏览器中正常工作。

类HttpResponseRedirect

构造函数的第一个参数是必需的 – redirect到的path。 这可以是完全合格的URL(例如'http://www.yahoo.com/search/')或绝对path(没有>域)(例如'/ search /')。 有关其他可选的构造函数参数,请参阅HttpResponse。 注意>这返回一个HTTP状态码302。

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

它应该从我正在阅读的东西中工作。

这实际上不应该工作,因为出于安全原因,Django默认只允许redirect到httphttpsftp

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

我与OAuth有相同的问题,并redirect到自定义scheme。
Django(在Apache上)在redirect到自定义scheme时抛出了500个( django.core.exceptions.SuspiciousOperation )。 解决办法是创build你自己的HttpResponseRedirect子类,或者只是做:

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