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 完成