zoukankan      html  css  js  c++  java
  • 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=='1@1.com' 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 完成

  • 相关阅读:
    迅为i.MX8M开发板Linux安卓9.0系统,四核CortexA53,单核CortexM4
    迅为龙芯2K1000开发板虚拟机ubuntu安装SSH服务
    迅为i.MX8MM开发板虚拟机Vmware的安装
    迅为龙芯2K1000开发板虚拟机ubuntu安装vscode
    归并排序XCoderLiu
    关于API中窗口子类化及超类化整理
    STL中最流行类模板vector
    andbook
    Navigation Failed: Cannot Find Application\HTML\1033\default.htm 错误解决办法
    html 播放音乐
  • 原文地址:https://www.cnblogs.com/clbao/p/9710578.html
Copyright © 2011-2022 走看看