Django的login_required装饰器与ajax搭配的小技巧
login_required是什么?
login_required是django提供的装饰器之一,主要用于检验用户进入该页面前,是否已经登录,如果用户没有认证,重定向到setting.py中LOGIN_URL字段值的路由。采用?next=连接登录后跳转的页面。重定向登录页面,登录后,将会跳转到?next=后面所接的路由。
1 | |
注:
如果想自定义重定向的路径,可以这样写装饰器,@login_required(login_url='/consumer/login/')
这样就会重定向到/consumer/login了。
重点来了:上面所说的login_required登录之后跳转到原界面只是适用于form等其他页面跳转的情况,不适用于ajax异步请求
原因:ajax请求不会自动跳转页面,login_required需针对可跳转的页面才能够返回之前的页。所以我们需要手动调用window.location.href进行跳转。因此我需要获取?next后面的资源地址,然后传给前端(或者前端解析),成功登录后location.href重定向。
部分代码:
1 | |
1 | |
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!