简单的django登录优化&ORM

Posted clbao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单的django登录优化&ORM相关的知识,希望对你有一定的参考价值。

上一篇写了一个静态的登录验证。

实景情况网页的登录验证都是动态验证的,过程其实是从后端拿到储存的账户与密码来和前端的输入信息进行匹配校验的。

 

一、把项目拆分,来一个单独登录的包,放在Django项目下

输入 ==>   python manage.py startapp app01

技术分享图片

此时重新打开下项目

技术分享图片多出来一个app01的文件夹

二、此时刚创建的app01Django并不知道,需要手动修改配置文件来告诉Django

技术分享图片

三、登录过程从主项目切换到app01包中的过程

技术分享图片

 

 

 

四、了解一下行的调用数据库的方法

优化上一篇的内容。此时后端sql的调用会用到一个比较简单常用的方法那就是  ORM(Object Relationship Model)

Django中ORM的使用

1、用处

  操作数据表

  操作数据行

2、ORM ===>帮你翻译SQL语句的

  优点     1开发效率高         2开发不用直接写SQL语句

  缺点    1.执行效率差

3、对应关系是:

  类 <--> 数据表
  属性 <--> 字段
  对象 <--> 数据行

五、Django中ORM的使用

1.先创建好一个数据库可以先用cmd去创建,登录数据库==》创建数据库

  cmd==》create database db6;  

 

2. 告诉Django连哪个数据库

在setting.py中修改默认的数据库连接

技术分享图片

3.用什么连接数据库

  利用第三方的包,比如第三方包:pymysql和MySQLdb
  告诉Django用pymysql模块代替默认的MySQLdb去连接MySQL数据库
  和settings.py同级的__init__.py文件,写上:
  import pymysql
  pymysql.install_as_MySQLdb()

技术分享图片

 

 4. 在app/models.py的文件中创建类

  类必须继承models.Model

  技术分享图片

5.两个命令

  1. python manage.py makemigrations --> 找个小本本把models.py的变更记录一下

    技术分享图片

    就是记录 models.py文件的变更记录下来

      技术分享图片

  2. python manage.py migrate --> 把上面的变更记录翻译成SQL语句,去数据库执行

    技术分享图片

    就是把刚才记录下来的内容转换成SQL语句执行

    技术分享图片

    找到自己创建的表单 app01_user  查看结构disc app01_user;   确认是否自己创建的表结构

    技术分享图片

 

 ######

技术分享图片

 

 六、打开pycharm中SQL可视化工具

  技术分享图片

  1.弹窗后下载对应SQL的驱动

技术分享图片

 

 

  2.弹窗可输入SQL语句了

技术分享图片

   3.找到指定表单user

技术分享图片

 

   4.添加SQL内容

技术分享图片

SQL表单中添加好账户密码信息后,再去处理逻辑

七、总算所有的铺垫做完毕了,现在进行app01登录的逻辑修改

  通过ORM 查询 user.object.filter(email=email,pwd=pwd) 

  此时修改app01下边的views.py文件

  1.模块倒入  

    from app01.models import User

  2.判断数据库和前端form表单校验

    ret =User.objects.filter(email=email,pwd=pwd)
    if ret:
      return redirect(‘https://www.baidu.com‘)

修改完成后即:
from django.shortcuts import HttpResponse  #返回一个指定的字符串时
from django.shortcuts import render   #返回一个html文件
from django.shortcuts import redirect  #跳转到其他网页
from app01.models import User


def login(request):
    error_msg = ‘‘    #定一个变量为空   login.html 中加入一个空的p标签内容为这个变量
    if request.method == POST:        # form表单的模式是POST请求,如果提交就走这个流程
        email = request.POST.get(email)
        pwd = request.POST.get(pwd)
        # print(email, pwd)
        # if email==‘[email protected]‘ and pwd ==‘123‘:  #假设账户和密码是正确的,需要跳转到主页上去(假如说百度)
        ret =User.objects.filter(email=email,pwd=pwd)
        if ret:
            return redirect(https://www.baidu.com)
        else:
            error_msg=邮箱或密码错误    #等账户或者密码错误是给这个变量赋值
    return render(request,login.html,{error_msg:error_msg})   # 第一次链接url输入网址是get请求   #并且输出这个变量

 

再去测试结果,登录的app01 完成

 

以上是关于简单的django登录优化&ORM的主要内容,如果未能解决你的问题,请参考以下文章

(Django)气流中的 ORM - 有可能吗?

Django之ORM性能优化建议

django优化--ORM查询

Django—— ORM查询(sql优化)优化了解,Django(元信息)元类建索引

Django项目 -- Django完成常用四大功能

django之ORM的查询优化,Ajax