Django开发:任务二 - 引入 admin 后台和管理员+外键的使用
本文是根据datawhale开源的 Django后端开发入门 做的笔记
Day3
- 引入 admin 后台和管理员
- 创建 admin 的超级管理员
- 在 admin 文件中引入数据表
- 注册数据表到 admin
- 外键的使用
- 给产品表创建一个外键
- 撰写根据产品分类筛选产品的 api
- 使用 postman 调用 api
1. 引入Admin
1.1 创建后台 admin 管理员
python manage.py createsuperuser #(创建超级管理员)
1.2 登录 admin 后台(浏览器中输入)
`http://127.0.0.1:8000/admin`
1.3 配置
在myApp文件夹下找到admin.py文件,注册您的模型:
from django.contrib import admin
from .models import * # 引入产品表
# 一定要分开逐个注册,不能放在一起
admin.site.register(Goods) # 在admin站点中 注册产品表
admin.site.register(GoodsCategory) # 在admin站点中 注册产品表
2. 构建数据表(外键的使用)
2.1 外键的概念和作用
外键是一种用于建立表之间关联关系的约束,通常指的是一个模型中的一个或多个字段的值必须符合另一个模型中对应字段的值。
2.2 更新产品表
在myApp文件夹下的models.py文件中,找到产品表类Goods
,添加外键,如果在前面任务一中已经添加了就不需要重复添加
# 外键
category = ForeignKey(GoodsCategory, on_delete=SET_NULL,related_name='goods_set',null=True,verbose_name='产品分类')
# on_delete 设置当外键对应的数据被删除时的反应
# null=True
2.3 构建根据分类获取某个分类下的产品 API
在views.py文件中,添加如下内容:
from django.shortcuts import render
from rest_framework.response import Response
from .models import *
from rest_framework.decorators import api_view
from django.shortcuts import get_object_or_404
# Create your views here.
# GET
# POST
# 函数式编程
@api_view(['POST', 'GET'])
def InsertGoodsCategory(request):
category_name = request.data.get('分类名字')
# 获取分类对象或创建新的分类对象
category, created = GoodsCategory.objects.get_or_create(name=category_name)
# 判断是否已存在分类
if not created:
return Response({
"status": "已存在", "goods_category": category_name}, status=200)
else:
return Response({
"message": f"Successfully inserted category '{
category_name}'."})
@api_view(['POST','GET'])
def FilterGoodsCategory(request):
data = request.data.get('分类名字')
goods = GoodsCategory.objects.filter(name=data)
if goods.exists():
return Response({
"status": "已存在", "goods_category": data}, status=200)
else:
return Response({
"status": "不存在" ,"goods_category": data}, status=404)
2.4 放入路由
在My_Django文件夹下的urls.py文件中,添加下面的内容:
from django.contrib import admin
from django.urls import path
from apps.erp_test.views import *
urlpatterns = [
path('admin/', admin.site.urls),
path('filtergoodscategory/', FilterGoodsCategory),
path('insertgoodscategory/', InsertGoodsCategory),
]
2.5 使用postman针对insertGoodsCategory/
和filtergoodscategory/
API接口进行测试,测试结果如下: