使用Django自带的登录访问限制login_required
在网站开发过程中,经常会遇到这样的需求:
用户登陆系统才可以访问某些页面
如果用户没有登陆而直接访问就会跳转到登陆界面,
用户在跳转的登陆界面中完成登陆后,自动访问跳转到之前访问的地
完成这样的功能其实不难,最简单的一种方法即为使用django自带的登录访问限制login_required。其使用方法非常简单,只需要在视图函数views.py中引入(login_required是一个装饰器)并装饰(所有)需要进行登录访问限制的视图函数即可,详情如下:
views.py
...
from djanco.contrib.auth.decorators import login_required
@login_required # 例子比较简单
def myview(request):
return render_to_response('index.html') # 假设其对应路由为/index/
settings.py
....
LOGIN_URL = '/login/' #这个路径需要根据你网站的实际登陆地址来设置,也就是登录路由
....
以上做好以后,没有登录的情况下直接访问/index/路由(本地为127.0.0.1:8000/index/)会发现出现类似下面的界面
说明以上代码生效了,然后大家看路由地址发现有了参数?next=/index/登录成功后就会跳转路由到/index/。
如果说以上都执行后发现并没有跳转到next指向的路由,此时要注意了,注意做以下操作:
此时我们的登录路由/login/有了参数next=/.../,我们只需要在登录的视图函数中获取到这个参数并在能获取到该next参数时重定向到next指向的路由即可,例如:
views.py 在登录的视图函数逻辑中修改
def userlogin(request):
next_to = request.GET.get('next', false)
if request.user: #判断用户是否登录成功
if next_to:
return HttpResponseRedirect( next_to )
return render_to_response('index.html') # 跳转到首页
如果是其它的路由/detail/等等操作都是一样的,三步走 1.挂视图(装饰器)2.设路由(登录路由)3.截跳转(获取到next就重定向)
————————————————
版权声明:本文为CSDN博主「Buffing」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Buffing/article/details/80808630
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)