• 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的一个完整执行流程"""
  • 相关阅读:
    桌面运维。
    X METAVERSE PRO Launches Cloud Mining, Creating a “New Era of Mining Trend”
    HCIA11 网络安全之本地 AAA 配置实验
    RocketMQ这样做,压测后性能提高30%
    元宇宙:未来我们的每一个日常行为是否都能成为赚钱工具?
    【微服务】一体化智慧工地管理平台源码
    C#中string类型是引用类型
    c语言小课设--通讯录(动态内存管理)
    linux中的find查找文件或者目录、locate快速定位文件路径
    Compose中的Text组件
  • 原文地址:https://blog.csdn.net/qq_65092135/article/details/134340973