django 学习(八)—— Django认证系统
在使用“migrate”命令进行数据迁移时(python manage.py migrate),Django同时也生成了auth_user表,该表中存放的用户信息可以用来登录Django自带的Admin管理后台。
首先,先创建登录admin后台的管理账号:python manage.py createsuperuser
管理员账号设置为:admin/admin123456
admin管理后台登录地址:http://127.0.0.1:8001/admin
使用管理员账号登录后台:
创建新的用户admin1/admin1234567,重新登录后台:
引用Django认证登录
Django已帮我们封装好了用户认证和登录的相关方法,只需拿来使用即可。并且,同样使用auth_user表中的数据进行验证,前面已经通过Admin后台向该表中添加了用户信息。
打开.../sign/views.py文件,修改login_action函数。
使用authenticate()函数认证给出的用户名和密码。它接受两个参数:username和password,并且会在用户名密码正确的情况下返回一个user对象,否则authenticate()返回None。authenticate() 只是验证一个用户的证书而已。 而要登录一个用户,使用 login() 。
通过if语句判断authenticate()返回对象,如果不为None,则说明用户认证通过,调用login()函数进行登录。login()函数接收HttpRequest对象和一个user对象。
问题:尝试直接访问http:127.0.0.1:8001/event_manage/时,可以直接打开该页面,那么登录页还有什么用呢?
解决:
修改views.py
如果想限制某个视图函数必须登录才能访问,则只需在这个函数的前面加上@login_required的装饰即可。
再次访问http:127.0.0.1:8001/event_manage/,Django会告诉访问的页面不存在(Page not found 404)。
访问被@login_required装饰的视图时,默认跳转的URL中会包含“/accounts/login/”,接下来继续修改,当用户访问登录后的页面时,让用户直接跳转至登录页。
修改.../urls.py文件,增加新的路径配置:
此时,当用户访问http:127.0.0.1:8001/event_manage/时,会跳转到登录页:
但是,如果你访问的是其他不存在的路径,比如/abc/,则依然会显示如图3.11所示的页面。这个时候需要设置默认的404页面
但是,如果你访问的是其他不存在的路径,比如/abc/,则依然会显示404页面。这个时候需要设置默认的404页面.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!