根据这个链接:http://www.django-rest-framework.org/tutorial/4-authentication-and-permissions/#adding-login-to-the-browsable-api
我需要在我的URLs.py中添加以下代码:
url(r'^api-auth/', include('rest_framework.urls',
namespace='rest_framework')),当我添加它时,用户可以登录到“auth”URL,并使用默认的DjangoRestFramework登录界面。成功登录后,用户将被定向到"/test“,因为我的settings.py中有以下代码:
LOGIN_REDIRECT_URL = '/test'我想让用户能够使用我自己的自定义界面登录,但是通过使用DjangoRestFramework的内置代码来登录用户,所以我创建了自己的模板。模板中的登录表单将post请求发送到
api-auth/login/并发送用户对象(由JS中的用户名和密码组成)以及POST请求。不返回错误,所以我假设登录成功。但是,它不会重定向到任何URL (我原以为它会重定向到"/test")。
知道它为什么不重定向到任何地方,以及我如何使它重定向到"/test"?
编辑:我也在前端使用AngularJS。
发布于 2015-09-22 16:51:30
LOGIN_REDIRECT_URL基本上来自django.contrib.auth,所以我不会使用它的其他后端,至少不一定/自动地使用它
另外,如果您正在通过REST登录(比如从AngularJS )登录,即使REST登录成功并返回了重定向响应,也不能保证AngularJS应用程序将导航到该页面,因为登录REST是使用XHR请求(来自$http或$resource等)命中的。
我使用的REST库与您略有不同,名为django-rest-auth (不是DRF附带的BrowsableAPI ),我从AngularJS进行身份验证,调用成功后,我只需将应用导航到一个新的URL
djangoAuth.login(username, password).then(function(){
// make angularJS navigate to new page when login is successful
// $location.path(...) or some other way
});底线是,由于您有一个auth,您可以使用登录表单创建一个小的AngularJS页面,然后当登录成功地使用AngularJS重定向时。
值得一看
我正在使用这两个库,它们在DRF上提供REST,并可选一个AngularJS库来帮助前端
https://stackoverflow.com/questions/32686426
复制相似问题