day54 django中orm数据库增删改查

昨日内容回顾

三板斧问题
复制代码
HttpResponse        # 返回的是字符串
render              # 渲染一个HTML静态文件,模板文件
redirect            # 重定向的
​
"""在视图文件中得视图函数必须要接收一个形参request,并且,视图函数也要有返回值:HttpResponse对象"""
配置文件
复制代码
settings.py文件就是Django框架的全局文件
注册应用
database
templates
调试模式
静态文件的配置
语言的修改
时区的修改
静态文件的配置
复制代码
静态文件是什么?
    css
    js
    img
    第三方的前端框架
    第三方工具
    
# 我们一般把HTML的静态文件放在templates文件夹下,静态文件放在哪里呢? 一般放在static文件夹
我们要手动的帮助我们创建static文件夹
static
    css
    js
    img
    ...
​
# 还需要在配置文件中配置一些数据
STATIC_URL='/static/'
​
STATICFILES_DIRS=[
    os.path.join(BASE_DIR,'static'),
    os.path.join(BASE_DIR,'static1'),
    os.path.join(BASE_DIR,'static2')
]
​
## 前端页面中得路劲
/static/css/my.css
​
## 动态解析
{% load static %}
{% static 'css/my.css' %}
​
# 千万不要按照前端里的路径查找方法了
request对象的方法
复制代码
request.method # 潘墩请求方式的  GET POST
request.POST.get()
request.POST.getlist()
request.GET.get()
request.GET.getlist()
django链接MySQL
复制代码
1. 在配置文件中配置一个数据
DATABASES={
    'NAME':
    'HOST':
    'PORT':
    'USER':
    'PASSWORD':
    'CHARSET':
}
​
2. 在任意的__init__文件中条件两句话
import pymysql
pymysql.install_as_mysqldb()
​
3. opertions.py-------->会报错
decode------->encode
orm简介
复制代码
对象映射模型
类-------->表名
对象-------->记录
属性-------->字段
​
# 在models.py文件中书写
class UserInfo(models.Model):
    aid = models.AutoField(primary_key=True)
    username = models.CharField(max_length=32)
  
  
# 迁移数据库
python3 manage.py makemigratinos
python3 manage.py migrate
​
# 字段的增删改查

今日内容概要

  • 数据的增删改查(insert update delete select)

  • 如何创建表关系(一对一 一对多 多对多)

  • Django框架的请求生命周期流程图(帮助你梳理Django的执行流程)

  • 路由层

  • 无名分组 有名分组(正则表达式)

  • 反向解析

  • 虚拟环境

  • 路由分发

今日内容详细

数据的增删改查(insert update delete select)
复制代码
1. 用户列表的展示
    # 把数据表中得用户数据都给查询出来展示在页面上
    添加数据
    id          username        password        gender      age     action
                                                                修改  删除
        
2. 修改数据的逻辑分析
    # 1. 先确定修改哪条记录------>怎么样确定修改哪条记录?
    # 2. 通过什么字段可以确定唯一一条记录? 主键id,要携带主键id到后端.
    # 3. 在后端接收主键id值,然后根据这个id值再去表中查询数据,查询一条
    # 4. 然后把查询的数据在渲染到页面中,然后在修改
    # 5. 把修改之后的表单提交到后端,在做修改
    
3. 删除功能的分析
    # 1. 给删除按钮加一个链接,携带当前记录的id值
    # 2. 后端要接收这个主键id值
    # 3. 后端直接执行删除操作
    
如何创建表关系(一对一 一对多 多对多)
复制代码
"""
一对一 
​
一对多 
​
多对多
​
没有关系
​
"""
图书表
​
出版社表
​
作者表
​
作者详情表
​
### 换位思考法判断表关系
图书表和出版社表   >>>    一对多   >>>   图书表是多,出版社是一  >>>    建在多的一方
图书表和作者表     >>>   多对多   >>>   需要第三张表
作者表和作者详情表 >>>   一对一     >>>  外键字段一般建在查询频率较高的
​
### 在Django中如何创建表关系
"""回头复习表关系"""
#######################################django1.x#######################################
​
class Book(models.Model):
    title = models.CharField(max_length=64)
    """
    max_digits=None,:总位数
    decimal_places=None:小数位数
    """
    # price decimal(8,2)
    price = models.DecimalField(max_digits=8, decimal_places=2)
    # publish_id = models.ForeignKey(to='Publish', to_field='id')
    """对于外键字段关系,会自动帮我们拼接_id"""
    publish = models.ForeignKey(to='Publish')
    """authors它是一个虚拟字段,它不会实际在表中创建出来这个字段,这一句可以自动帮助我们创建出来第三张表"""
    authors = models.ManyToManyField(to='Author')
"""出版社表"""
class Publish(models.Model):
    name = models.CharField(max_length=64)
    addr = models.CharField(max_length=64)
​
​
"""作者表"""
class Author(models.Model):
    name = models.CharField(max_length=64)
    author_detail = models.OneToOneField(to='AuthorDetail')
​
"""作者详情表"""
class AuthorDetail(models.Model):
    phone = models.CharField(max_length=64)
    email = models.CharField(max_length=64)
Django的请求生命周期流程图
复制代码
"""它可以帮助你们熟练django的一个完整执行流程"""
相关推荐
一点媛艺2 小时前
Kotlin函数由易到难
开发语言·python·kotlin
魔道不误砍柴功3 小时前
Java 中如何巧妙应用 Function 让方法复用性更强
java·开发语言·python
_.Switch3 小时前
高级Python自动化运维:容器安全与网络策略的深度解析
运维·网络·python·安全·自动化·devops
测开小菜鸟4 小时前
使用python向钉钉群聊发送消息
java·python·钉钉
Ai 编码助手5 小时前
MySQL中distinct与group by之间的性能进行比较
数据库·mysql
陈燚_重生之又为程序员5 小时前
基于梧桐数据库的实时数据分析解决方案
数据库·数据挖掘·数据分析
caridle5 小时前
教程:使用 InterBase Express 访问数据库(五):TIBTransaction
java·数据库·express
白云如幻5 小时前
MySQL排序查询
数据库·mysql
萧鼎5 小时前
Python并发编程库:Asyncio的异步编程实战
开发语言·数据库·python·异步
学地理的小胖砸5 小时前
【一些关于Python的信息和帮助】
开发语言·python