学习笔记,仅供参考


用Django自带的User模型类进行模拟登录

基于上个Blog中学习的用户认证系统,我们再用Django自带的User模型类,进行模拟登录(模拟登录的意思就是没有真正的登录,不涉及session和cookies)。

第一步

创建新的APP, 并添加路由信息

我们在mywebsite_bookstore项目下创建一个APP,叫myuser:

python manage.py startapp myuser

在settings.py中的INSTALLED_APPS列表中添加myuser应用:

INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','bookstore','userinfo','myuser',
]

我们在myuser应用中创建一个新的urls.py文件,并敲入如下代码:

from django.urls import re_path
from . import viewsurlpatterns = [re_path(r'^login/$', views.mylogin),]

在主urls.py中,添加myuser应用的路由:

from django.urls import re_path
from django.contrib import admin
from django.conf.urls import include
from . import viewsurlpatterns = [re_path(r'^admin/', admin.site.urls),re_path(r'^myuser/', include('myuser.urls')),
]

第二步

新建模板文件夹templates/myuser,创建登录页面的模板文件,并创建视图函数login

在myuser应用下新建一个模板文件夹templates,再建立一个myuser文件夹,在里面创建2个模板文件:

login.html:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>登陆</title>
</head>
<body>
<form action="/myuser/login/" method="POST">{% csrf_token %}<div><lable>用户名</lable><input type="text" name="username"value="{{ username }}"></div><div><lable>密码</lable><input type="password" name="password"></div><div><lable for="id_remember">记住密码</lable><input type="checkbox" name="remember" id="id_remember"value="1"></div><div><input type="submit" value="登陆"></div></form></body>
</html>

在myuser应用下的views.py模块中,我们创建新的视图函数mylogin:

def mylogin(request):if request.method == "GET":return render(request, 'myuser/login.html', locals())elif request.method == "POST":username = request.POST.get('username', '')password = request.POST.get('password', '')try:user =  models.User.objects.get(username = username)if user.check_password(password):return HttpResponse("登陆成功...")else:return HttpResponse("登录失败...")except:return HttpResponse("没有此用户...")

在这个视图函数中,我们不仅检查了用户是否存在,还检测了在用户存在条件下输入的密码是否正确。

注意,这里的models.User.objects.get(username = username)是从mysql的mybookstore数据库的auth_user数据表中提取的数据,我们来简单看一下这个数据表中的数据:

mysql> select id, username, email, is_superuser from auth_user;
+----+------------+----------------------+--------------+
| id | username   | email                | is_superuser |
+----+------------+----------------------+--------------+
|  1 | goatbishop | goatbishop@gmail.com |            1 |
+----+------------+----------------------+--------------+
1 row in set (0.00 sec)

第三步

进行模拟登录

现在,我们开启服务,并向http://127.0.0.1:8000/myuser/login发起请求,并填入用户名和密码:

点击登录

显示登录失败…ARE YOU OK?

不应该啊,难道是我记错密码了?

我重新输入一个密码,结果登录成功了,果然是我记错密码了:

Django(part49)--用Django自带的User模型类进行模拟登录相关推荐

  1. Django博客系统注册(定义用户模型类)

    1. Django默认用户认证系统 Django自带用户认证系统 它处理用户账号.组.权限以及基于cookie的用户会话. Django认证系统位置 django.contrib.auth包含认证框架 ...

  2. Django学习笔记(3):使用模型类进行查询(查询函数、F对象、Q对象、聚合函数、查询集、模型类关系、关联查询、自关联、管理器)

    文章目录 1.查询函数 2.F对象 3.Q对象 4.聚合函数 5.Count函数 6.查询集 查询集的特性 对查询集进行切片 判断一个查询集中是否有数据 7.模型类之间的关系 一对多关系 多对多关系 ...

  3. Django框架(6.django后台管理/通过后台对数据表的增删改)

    1.django项目中的admin.py  即:  后台管理相关文件 使用Django提供的相关管理机制的步骤 1.本地化 语言和时区的本地化    ( 修改项目中的settings.py的文件) 2 ...

  4. Django模板之django自带模板

    模板 知识点 自带模板 基本使用 流程控制 过滤器 继承 Jinja2模板 配置 CSRF 原理 如何防范 一.Django使用自带模板 1.1 配置 在工程中创建模板目录templates.[然后新 ...

  5. django mysql orm教程_带你了解Django ORM操作(基础篇)

    前言 在日常开发中,需要大量对数据库进行增删改查操作. 如果头铁的话,使用原生SQL是最好的,毕竟性能又高,又灵活. 但是通常情况下,我们不是太需要那么苛刻的性能,也没有那么多刁钻的需求用原生SQL ...

  6. Web框架之Django_01初识(三大主流web框架、Django安装、Django项目创建方式及其相关配置、Django基础三件套:HttpResponse、render、redirect)

    阅读目录 摘要: Web框架概述 Django简介 Django项目创建 Django基础必备三件套(HttpResponse.render.redirect) 一.Web框架概述: Python三大 ...

  7. Django默认用户认证系统和用户模型类

    Django默认用户认证系统和用户模型类 1.Django默认用户认证系统 Django自带用户认证系统 Django认证系统位置 Django认证系统同时处理认证和授权 Django认证系统包含的内 ...

  8. Django框架(16.Django中的模型类管理器以及自定义管理器)

    模型类.objects.all()->objects是一个什么东西呢? 答:objects是Django帮我自动生成的管理器对象,通过这个管理器可以实现对数据的查询. objects是model ...

  9. Django框架(12.Django中模型类高阶查询(Q对象以及F对象 和聚合函数查询))

    Q对象 作用:用于查询时条件之间的逻辑关系.not and or,可以对Q对象进行  &  |  ~  操作. & : 且        | :  或          ~ :非: 就 ...

最新文章

  1. MapReduce学习总结之Combiner、Partitioner、Jobhistory
  2. php 防止表单重复提交
  3. maven 打包jar_Maven一定要会的这几个知识!
  4. android tablayout 字体颜色,Tablayout变颜色 以及Fragment进行切换
  5. Hyperledger Fabric 1.0 实战开发系列 第三课 chaincode开发
  6. 看完这篇文章,我奶奶都懂了https的原理
  7. 二叉树的后续遍历算法实现
  8. 另一种办法直接在宿主机上的文件夹内查看Docker镜像运行的日志文件
  9. vue3打包后无法加载页面
  10. 常见的算法面试问题以及代码实现
  11. JAVA版本微信公众账号开源项目版本发布-jeewx1.0(捷微)
  12. redis java 发布订阅_Redis之发布订阅(Java)
  13. 如何使用计算机来线性拟合,Excel2019使用教程:绘制线性回归图
  14. 关于git push报hook declined
  15. 最新!中国大陆人口首超14亿!但我们为什么不再生孩子了?
  16. 屏幕开发学习 -- 迪文串口屏
  17. 第9周--项目1-Complex类
  18. 小米手机便签怎么看写了多少字 小米手机便签统计字数方法
  19. java中的notify和notifyAll有什么区别?
  20. 移动硬盘安装ubuntu后问题记录:windows 开机进入grub界面

热门文章

  1. DBeaver中event实验
  2. 12伏的蓄电池有几个单格组成_福建汤浅蓄电池ups电源机房一体化
  3. 牛客网 在线编程 回文链表
  4. android studio gradle 多渠道打包配置
  5. Python核心编程(第九章)--文件和输入输出
  6. zabbix 搭建笔记
  7. 润乾报表实现无数据源的规则报表及改进
  8. IntelliJ IDEA 运行 Maven 项目
  9. 近期工作中使用到的插件总结
  10. MenuItem创建注意事项