1,一对多 数据库表模型
分类
class Category(models.Model):
name = models.CharField(max_length=32)
商品
class Goods(models.Model):
name = models.CharField(max_length=32)
# 外键
cate = models.ForeignKey(‘Category’,on_delete=models.CASCADE)
查询
1 正向查询 站在商品的角度上查询数据
# goodsobj.外键.关联类的字段
goodsobj = models.Goods.objects.filter(id=1).first()
# 想获取商品分类的名称是什么?
goodsobj.cate.name # 商品分类的名称
2 反向查询 站在商品分类的角度上来说
# cateobj.类名小写_set.all()
cateobj = models.Category.objects.filter(id=1).first()
# 获取该分类下有哪些商品
data = [i.name for i in cateobj.goods_set.all()]
中间件 中间件只要注册,全局通用
1 导包
from django.utils.deprecation import MiddlewareMixin
2 自定义中间件
class CustomMiddlewareMixin(MiddlewareMixin):
pass
3 重写方法
# 1 process_request
# 2 process_views
# 3 process_template_view
# 4 process_exception
# 5 process_response
class CustomMiddlewareMixin(MiddlewareMixin):
def process_request(self,request):
‘’’
代码块
‘’’
pass
4 注册到settings.py 中的 MIDDLEWARE
MIDDLEWARE = [
…
‘xxx.xxx.CustomMiddlewareMixin’
]
序列化和反序列化
1 导包
from rest_framework import serialize