Django框架(三)—— orm增删改查、Django生命周期
orm增删改查、Django生命周期
一、orm介绍
1、什么是orm
ORM即Object Relational Mapping,全称对象关系映射。
2、使用orm的优缺点
优点:
- 不用写SQL语句
- 开发效率高
缺点:
- SQL的效率低
3、使用orm
如果连接的是pycharm默认的Sqlite,不用改动,使用默认配置即可
如果连接mysql,需要在配置文件中的setting中进行配置:
将DATABASES={} 更新为
DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','HOST': '127.0.0.1', 'PORT': 3306, 'USER': 'root', 'PASSWORD': '123123', 'NAME': 'test_database', } }
同时还要在__init__.py文件中进行初始化设置:
import pymysql pymysql.install_as_MySQLdb()
配置完以后,要进行数据迁移(在pycharm的终端Terminal中运行指令),否则数据更新不能同步到mysql数据库中
python manage.py makemigrations ----记录数据库的变化,在migrations文件中可以看到记录
python manage.py migrate ----将变化同步到数据库中
或者
菜单 tools--->Run manage.py Task,即可进入manage.py,直接输入以下指令即可
makemigrations ----记录数据库的变化,在migrations文件中可以看到记录
migrate ----将变化同步到数据库中
4、orm的使用限制
只能创建数据表和字段,不能创建数据库(必须手动创建数据库)
创建一个类就表示创建了一个数据表,类中的属性表示数据表中的字段
创建表和字段在modules.py中
类 ---> 数据表
属性 ---> 字段
5、orm创建表和字段
# 类必须继承models.Model类,否则只表示一个普通的类
# AutoField 自动增长的int类型
# primary_key=True 该字段是主键
# CharField(max_length=32) 表示 varchar(32) class User(models.Model): id = models.AutoField(primary_key=True) name = models.CharField(max_length=32) password = models.CharField(max_length=32) address = models.CharField(max_length=32)
二、orm增删改字段
在增删改以后都要进行数据迁移
1、orm增加字段
直接在创建表的类中添加一个属性,即增加一个字段,然后执行数据迁移
添加的字段必须有默认值,两种方式
- 在添加的参数中添加默认值
phone=models.CharField(max_length=64,default='120')
- 在数据迁移的时候,设置默认值
2、orm删除字段
将类中的属性注释,即表示删除字段,执行数据迁移
3、orm修改字段
直接修改类中的属性,执行数据库迁移命令
4、案例总结
- user表的增删改
(1)单表查询所有用户
得到的是queryset对象(类似于列表),列表中一个个对象[user1, user2, user3]
res = models.User.objects.all()
(2)render
返回页面,将queryset对象(类似于列表)res返回到userlist.html页面的user_list
render(request, 'userlist.html', {'user_list': res})
(3)循环模板
{% for user in user_list %}# 要循环的内容,下面的插值表达式表示获取每一个user的name的数据 {{user.name}}
{% endfor%}
(4)get请求携带参数
通过get发送请求,会将数据暴露出来,例如id就会显示http://127.0.0.1:8000/deleteuser/?id=1
前台get方式提交的数据,后台从request.GET字典里取值:
id = request.GET.get('id') # 推荐使用,即使没有接收到数据也会有默认值,不会抛出异常
或者
id = request.GET['id'] # 该方式要是没有接收到数据会出现异常
(5)post请求提交数据
前台post方式提交的数据,后台从request.POST字典里取值:
name = request.POST.get('name')
(6)删除数据记录
先过滤找到指定数据,然后调用方法delete()删除该数据
# 返回值是影响的行数
res = models.User.objects.filter(id = id).delete()
(7)添加数据记录
两种方式:
- 方式一:
user=models.User.objects.create(name=name,password=pwd,address=addr)
- 方式二:
user = models.User(name=name, password=password, address=addr)
user.save()
(8)修改数据记录
先过滤找到要修改的数据记录,然后调用update()方法修改数据
models.User.objects.filter(id = id).update(name=name,password=password,age=age)
(9)查询单条数据
由于过滤到的所有数据可能是多条数据,所以要用first()来取出第一条
models.User.objects.filter(id=id).first()
三、Django生命周期
浏览器 ---> web服务器 ---> 路由匹配 ----> 视图函数 ---> 操作模板和数据
图文参考:参考网址
转载于:https://www.cnblogs.com/zhuzhiwei-2019/p/10779076.html
Django框架(三)—— orm增删改查、Django生命周期相关推荐
- Django 07. django框架模型之增删改查基本操作
简介 django框架模型之数据库表增删改查基本操作 1. 生成数据库表结构 models.py #!/usr/bin/env python # -*- coding: utf-8 - ...
- Django04-1: ORM增删改查
ORM 增删改查 一.字段增加 #终端输入 1.model里添加字段, 2.执行迁移命令. 3.终端里输入默认值,继续执行迁移命令. #允许为空 再null=true,终端不需要输入默认值 #设置默认 ...
- 【MyBatis】安装 + 框架搭建 + 优化 + 增删改查(全程一条龙服务讲解~)
目录 前言 一.准备工作 1.1.下载MyBatis 1.2.数据库设计 二.搭建框架 2.1.创建Maven项目 2.2.jar包.引入依赖 2.3.创建MyBatis核心配置文件 2.4.映射文件 ...
- java ssm框架做增删改查,使用SSM框架组合实现增删改查的功能
基于ssm框架组合的增删改查功能 ssm框架组合之前已经搭建完成了,下面基于该框架组合实现增删改查的功能,首先创建一个数据库和一张表: CREATE DATABASE `ssmteam` /*!401 ...
- Django框架(三)-- orm增删改查、Django生命周期
一.orm介绍 1.什么是orm ORM即Object Relational Mapping,全称对象关系映射. 2.使用orm的优缺点 优点: 不用写SQL语句 开发效率高 缺点: SQL的效率低 ...
- Django之数据表增删改查
Django数据增删改查: 上课代码 from django.shortcuts import render,HttpResponse# Create your views here. from ap ...
- ManytoMany字段增删改查Django
Django下ManytoMany 增删改查 建立学生类老师类多对多关系,用ManytoManyField,迁移同步后自动生成中间表tb_Teacher_Student # 学生类 class Stu ...
- SSHE框架整合(增删改查)
1.前期准备:jar包(c3p0.jdbc ,各个框架) web.xml文件:spring的 转码的,和Struts2的过滤器 <?xml version="1.0" e ...
- SSM框架搭建+easyui增删改查
转载于:http://www.cnblogs.com/caiya928/p/4851686.html?utm_source=tuicool&utm_medium=referral 闲来无事,看 ...
最新文章
- Java多种方式读文件,追加文件内容,等对文件的各种操作
- UA MATH563 概率论的数学基础 中心极限定理12 强大数定律 版本2:Etemadi定理
- 2020牛客国庆集训派对day8
- [Delphi]ListView基本用法大全
- [交叉验证]机器学习中分类器的选择
- 测试“测试”的“测试”
- 七阶拉丁方阵_C语言实例 拉丁方阵
- BOW( opencv源码)
- 分层架构中各层之间关系如何界定,期待大家来讨论
- 【WPS表格】从身份证号码提取各种信息,如出生日期、年龄、性别、户籍所在地
- C/C++回溯经典练习:马的走法
- Eclipse下载不了,无法访问此网页,不要慌,2步解决问题5.20
- 远程控制android盒子,电视盒子ADB教程 通过ADB远程安装应用方法(2)
- C#,动态规划问题中基于单词搜索树(Trie Tree)的单词断句分词( Word Breaker)算法与源代码
- eclipse android模拟器 慢,android模拟器太慢怎么办?
- 游戏渲染建模常用到的相关名词 AlvinCR个人理解-(烘焙、法线、LOD、UV坐标、各向异性)
- 由DatePicket和TimePicker扩展延伸其他控件
- 建模simulink - xpc调试手段
- pogo pin连接器与排针、排母的寿命区别
- Voyager的路由
热门文章
- MVVM实践中的Command与CommandParameter的使用
- 2.struts1.x中的异常处理
- 转我们经理的一篇文章,业务流程实现的讨论,希望大家集思广议。
- 微信小程序开发工具中快捷键
- css(float浮动和clear清除)
- 钉钉扫码登录的实现 与OAUTH2.0
- MVC4.0网站发布和部署到IIS7.0上的方法
- jQuery EasyUI API 中文文档 - 进度条
- 2000/XP自动网络GHOST+全自动改IP
- 如何在asp.net中如何在线播放视频文件