Django学习笔记八:开发一个登录功能——Django认证系统

到现在的学习,目前登录功能虽已实现,但是用户名和密码都是指定字符串,并没有通过一个认证系统来验证用户的真实信息。

一、登录admin系统

在笔记七中使用“migrate”命令进行数据迁移时,Django生成了一张auth_user表,用于存放用户信息,此用户信息可以登录Django自带的Admin管理后台。在此先创建一个admin管理后台的管理员账号。

Django学习笔记八:开发一个登录功能——Django认证系统_第1张图片

可以看到依次要求输入用户名、邮箱、密码、确认密码,上图中有个提示是因为我输入的密码是6位,而密码至少输入8位。

admin管理的登录地址是:http://127.0.0.1:8000/admin/

打开连接后,输入创建的管理员账号登录,并点击add按钮添加用户。

Django学习笔记八:开发一个登录功能——Django认证系统_第2张图片

Django学习笔记八:开发一个登录功能——Django认证系统_第3张图片

注意新添加的用户,默认只是活动的权限,需要赋予可以登录的权限,否则无法登录到系统。

Django学习笔记八:开发一个登录功能——Django认证系统_第4张图片

进入后台查看状态不可登录:


点击用户名进入编辑页面修改权限:

Django学习笔记八:开发一个登录功能——Django认证系统_第5张图片

保存成功后就可以登录系统了,但登录后没有权限。

二、引用Django登录

修改../sign/views.py

Django学习笔记八:开发一个登录功能——Django认证系统_第6张图片

使用authenticate()函数认证给出的用户名和密码。有两个参数:username、password。在用户名和密码正确的情况下返回一个user对象,否则authenticate()返回None。

三、必须登录

直到目前,其实可以不用登录就可以访问登录后的页面,输入:http://127.0.0.1:8000/login_success/即可直接访问,只是无用户名。

Django学习笔记八:开发一个登录功能——Django认证系统_第7张图片

为使用户必须登录,继续修改../sign/views.py

Django学习笔记八:开发一个登录功能——Django认证系统_第8张图片

如果想要限制某个视图函数必须登录才能访问,则只需在这个函数的前面加上@login_required的装饰即可。

现在清除浏览器缓存或在隐身模式下打开浏览器,直接输入登录成功后的网页就会发现报404错误。

Django学习笔记八:开发一个登录功能——Django认证系统_第9张图片

当然目前是限制了必须登录才能访问下一级页面,但是这样并不友好,总不能让用户的登录信息过期或者其他因素给用户一个错误的页面,用户却并不知道发生了什么,所以我们要引导用户进行登录,所以应该直接跳转到登录界面。

修改../urls.py

Django学习笔记八:开发一个登录功能——Django认证系统_第10张图片

这样未登录直接访问http://127.0.0.1:8000/login_success/就会跳转到登录界面了

你可能感兴趣的:(Django)