中间件,配置数据库,生成迁移文件

上一篇视图里面获取数据,返回数据

反解析 获取地址

有时候路由会发生改变,那么对应的视图的redirect跳转页面时的路径也要一起改变,为了避免太多的操作,所以使用反解析获取地址后,无论子应用里路由名字怎么变,对应的视图里都可以直接获取到改变后的最新路由
设置
1.总路由 urls里给应用添加别名
在这里插入图片描述

2.子应用里给单独的视图起别名
在这里插入图片描述

3.在视图中 用reverse获取对应的地址
在这里插入图片描述


中间件

django框架 不管是发送request请求前后 还是 返回response响应前 都可以被 MiddleWare 中间件拦截,来添加一些有必要的处理
我们可以自定义中间件

  1. 在工程目录下 , 创建mymiddleware文件
  2. 写中间件类 继承MiddlewareMixin
    在这里插入图片描述3.在setting里注册
    在这里插入图片描述4. 多个中间件执行顺序
  • 在视图函数被处理前,中间件由上至下依次执行
  • 在视图函数被处理后,中间件由下至上依次执行
    在这里插入图片描述

配置数据库

  • 配置里如果用ip地址访问
  • 需要修改mysql库里的user表里的 User字段为root的那条数据的Host字段为%.
    查询账户Host信息
    select Host,User from mysql.user;
    修改
    update mysql.user set host = ‘%’ where user = ‘root’;
    在这里插入图片描述

生成迁移文件

先安装mysqlclient

命令 : pip install mysqlclient -i
可能会报错,因为有依赖环境,可以参考虚拟机Ubuntu安装 mysqlclient 报错
如果解决不了,那就在django里用pymysql 添加如下
在这里插入图片描述
现在开始创建一个新的子应用 booktest
在booktest的models里创建 模型类

from django.db import models


class BookInfo(models.Model):
    """图书  一对多 的 一"""

    btitle = models.CharField(max_length=20, verbose_name="书名")
    bpub_date = models.DateField(verbose_name="发布日期")
    bread = models.IntegerField(default=0, verbose_name="阅读量")
    bcomment = models.IntegerField(default=0, verbose_name="评论量")
    is_delete = models.BooleanField(default=False, verbose_name="逻辑删除")
    image = models.ImageField(upload_to='bookimage', verbose_name="封面", null=True)

    class Meta:
        db_table = 'bookinfo'
        verbose_name = '书'

    def __str__(self):
        return self.btitle


class HeroInfo(models.Model):
    """图书  一对多 的 多"""

    GENDER_CHOISE = (
        (0, 'male'),
        (1, 'female')
    )

    hname = models.CharField(max_length=20, verbose_name="名字")
    hgender = models.SmallIntegerField(choices=GENDER_CHOISE, verbose_name="性别")
    hdesc = models.CharField(max_length=200, null=True, verbose_name="介绍")
    hbook = models.ForeignKey(BookInfo, on_delete=models.CASCADE, verbose_name="评论量")  # 外键 hbook_id
    is_delete = models.BooleanField(default=False, verbose_name="逻辑删除")在这里插入图片描述


    class Meta:
        db_table = 'heroinfo'
        verbose_name = '英雄'

    def __str__(self):
        return self.hname

生成迁移文件

python manage.py makemigrations

执行迁移命令

python manage.py migrate

结果:
在这里插入图片描述

下一篇django orm增删改查 基本查询 过滤查询 FQ 排序

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值