Django登录后跳转到域外网站

需求

采用Django Rest Framework,网站托管在码云,但想用Django的登录。理论上应该这么写:

http://my.server.com/api-auth/login/?next=http://my.frontend.com/

但是这样并不会跳转到我的前端页面,而是跳转到了

http://my.server.com/

这就有点尬了。

测试RedirectView

我对RedirectView做了个小测试,RedirectView是可以接受域外参数的

class MyView(RedirectView):
	url = 'http://baidu.com/"

跳过去一点问题也没有。

解决

有一个参数success_url_allowed_hosts可能有关,打算自定义一个Login页面了。

from __future__ import unicode_literals

import django
from django.conf.urls import url
from django.contrib.auth import views

LoginView = views.LoginView
LogoutView = views.LogoutView
LoginView.success_url_allowed_hosts = {'localhost', 'my.frontend.com'}
LogoutView.success_url_allowed_hosts = {'localhost', 'my.frontend.com'}
login = LoginView.as_view(template_name='rest_framework/login.html')
login_kwargs = {}
logout = LogoutView.as_view()

app_name = 'rest_framework'
urlpatterns = [
    url(r'^login/$', login, login_kwargs, name='login'),
    url(r'^logout/$', logout, name='logout'),
]

代码基本上就是rest_framework/urls.py里面拷的,添加了success_url_allowed_hosts参数。

不得不说,CSDN这个黑色背景真的真的好丑。

你可能感兴趣的:(Django)