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

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

一、把项目拆分,来一个单独登录的包,放在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文件

.模块倒入  
from app01.models import User .判断数据库和前端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 完成

Django之ORM初始的更多相关文章

  1. python——Django(ORM连表操作)

    千呼万唤始出来~~~当当当,终于系统讲了django的ORM操作啦!!!这里记录的是django操作数据库表一对多.多对多的表创建及操作.对于操作,我们只记录连表相关的内容,介绍增加数据和查找数据,因 ...

  2. Python’s SQLAlchemy vs Other ORMs[转发 3]Django's ORM

    Django's ORM Django is a free and open source web application framework whose ORM is built tightly i ...

  3. 将SALT_STACK的JOB-CACHE放到数据库中,而建库用DJANGO的ORM完成

    下面包括了SALT_MASTER的配置,及DJANGO的ORM里更改默认表名称,更改默认字段名称(里面有个RETURN),更改默认ID索引... 一个下午有和它磨来磨去... 感谢鹏龙,感谢高远..: ...

  4. Django:之ORM、CMS和二维码生成

    Django ORM Django 的数据库接口非常好用,我们甚至不需要知道SQL语句如何书写,就可以轻松地查询,创建一些内容,所以有时候想,在其它的地方使用Django的 ORM呢?它有这么丰富的 ...

  5. Django的ORM实现数据库事务操作

    在Django中实现数据库的事务操作 在学习MySQL数据库时,MySQL数据库是支持原子操作的. 什么是数据库的原子操作呢??打个比方,一个消费者在一个商户里刷信用卡消费. 交易正常时,银行在消费者 ...

  6. 第十九章 Django的ORM映射机制

    第十九章 Django的ORM映射机制 第一课 Django获取多个数据以及文件上传 1.获取多选的结果(checkbox,select/option)时: req.POST.getlist('fav ...

  7. Django之ORM基础

    ORM简介 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. 简单的说,ORM是通过使用描述 ...

  8. Django中ORM介绍和字段及其参数

    ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. 简单的说,ORM是通过使用描述 ...

  9. ORM以及Django使用ORM创建表

    day61 2018-04-28 1. 内容回顾 1. HTTP协议消息的格式: 1. 请求(request) 请求方法 路径 HTTP/1.1\r\n k1:v1\r\n ...\r\n \r\n ...

随机推荐

  1. 【linux】ftp使用端口转发问题

    相关资料: 1.[ssh]端口转发 2.[ftp]主动模式和被动模式 先说结论:用端口转发无法解决ftp客户端与服务器的连接问题,原因是ftp的data端口不固定,不能把所有>1024的端口都做 ...

  2. samba 二进制包 tar.gz 安装

    一.下载 sudo wget https://download.samba.org/pub/samba/stable/samba-4.8.10.tar.gz 二.解压 sudu tar -xvzf s ...

  3. uva11754 中国剩余定理+暴力搜索

    是当y的组合数较小时,暴力枚举所有组合,然后用中国剩余定理求每种组合的解,对解进行排序即可 注意初始解可能是负数,所以如果凑不够S个,就对所有解加上M,2M.... 当y的组合数较大时,选择一个k/x ...

  4. sort方法实际应用详解---javascript中对一个对象数组按照对象某个属性进行排序

    转载: 查看原文 在javascript中,对象和数组是两种不同的类型,这和php中的数组概念不同.在javascript中,也有一些精妙的算法,用来对一些对象进行排序.我在面试迅雷的时候,也拿到一道 ...

  5. IntersectionObserver API 使用教程

    转载:原文地址:http://www.ruanyifeng.com/blog/2016/11/intersectionobserver_api.html 网页开发时,常常需要了解某个元素是否进入了&q ...

  6. Axure之全局变量

    ****全局变量*****1.定义:变量是一个数据的容器,是一个字符串,可设置默认值:2.功能:两个功能:读.写3.特点:随时随地可以对变量进行读和写,不限页面.也就是在不同的页面也可以访问同一个全局 ...

  7. shell 排除目录

    1.新建文件 exclude.txt,在文件中写需要排除的目录(只需要目录名称,不需要路径) 2.--exclude-from='/data/www/vhosts/git_track/git-shel ...

  8. 使用python调用email模块发送邮件附件

    使用python调用email模块实现附件发送 需要模块: import datetime import time import sys import mimetypes import smtplib ...

  9. 主流前端框架对比:Vue.js , React, Angular.js

    个人认为Vue.js的文档最恳切.我认为结合文档和遇到问题Google答案的匹配度来讲:Vue.js > ReactJS > AngularJS > Angular 2 如何使用Vu ...

  10. 解决redis aof文件过大的问题

    执行BGREWRITEAOF命令对redis的AOF进行重写 redis-cli BGREWRITEAOF 相关解释: Redis的AOF机制有点类似于Mysql binlog,是Redis的提供的一 ...