| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Python知识库 -> Dajngo项目:极致果蔬(二) -> 正文阅读 |
|
[Python知识库]Dajngo项目:极致果蔬(二) |
上篇讲述了用户注册部分的处理,下面继续完善项目的用户登录部分,登录用户的基本流程如下: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? 继续上篇的项目,我们打开服务器访问登录页面,发现没有样式,这是因为login.html中没有加载static的一些js和css文件,这时需要修改这部分信息即可。接下来就对用户登录部分的一些重要的知识点进行总结。 1.判断登录逻辑? ?在项目中,Django提供两个函数authenticate()、login()函数。authenticate()函数只是用于验证用户登录,它接受两个参数,用户名username和密码password,并在密码对给出的用户名合法的情况下返回一个User对象,如果密码不合法,authenticate()返回None。而要登录一个用户,可以使用login()函数,该函数接受一个HttpRequest对象和一个User对象作为参数并使用django的session框架把用户的ID保存在session中,以便后续的存取。 ? ?使用Authenticate()函数的好处: ? (1)它的认证功能比较安全可靠,避免在验证过程中出现异常; ? (2)使用起来比普通认证逻辑要省时省事。 ? ?这里判断登录逻辑的处理放在LoginView()类视图的post方法中;
2.记录用户信息? ?当登录用户后,session信息内容都保存在MySQL的django_session表中,如果要频繁的存取数据会加重数据库的存储压力,因此我们可以使用Redis作为缓存数据库(session将数据储存在Redis中),可持久化缓存用户的登录信息并且可以快速存取数据(需要的时候从Redis中获取)。 ? ?在安装好django-redis库的同时,还要在项目的settings.py初进行配置;
? ?由于django-redis作为session储存后端不用安装其它的backend,因此配置好上述的内容后,还需要配置session,下面是在settings.py中添加的配置内容;
? ?在登录界面中还有一个“记住用户名”的按钮,当登录验证成功后,若勾选了“记住用户名”的按钮,则可以把用户名设置到cookies中并设置5天内免输入用户信息,方便下次登录,这里用set_cookie方法来实现;若未勾选时,则删除cookies值(使用delete_cookie的方法)。当记录用户名成功后,下次登录操作时,直接用get方式登录。此时可默认设定用户名,需要使用COOKIES来获得用户名; ? ?在user/views.py文件中的LoginView()类视图进行修改;
? ?接着,修改login.html页面中的表单数据内容;
3.退出? ?在退出视图中调用用户认证系统的logout方法并配置路由即可;
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/16 3:38:35- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |