需求
采用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这个黑色背景真的真的好丑。