当前位置:网站首页>P3 元宝序列化笔记
P3 元宝序列化笔记
2022-07-30 05:40:00 【YuanBao717】
1.数据的操作:增删查改
老师的增删查改 和 学生的增删查改
模型类对应的查询结果集(数据) 和 序列化器不一样
1.创建项目、创建应用
2.配置项目
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'corsheaders',
'myapp',
]
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
# 'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'corsheaders.middleware.CorsMiddleware',
]
CORS_ORIGIN_ALLOW_ALL = True
配置数据库,需要提前准备好employee数据库
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'HOST': 'localhost',
'PORT': 3306,
'USER': 'root',
'PASSWORD': 'root',
'NAME': 'employee',
}
}
LANGUAGE_CODE = 'zh-Hans'
TIME_ZONE = 'Asia/Shanghai'
3.安装数据库
import pymysql
pymysql.install_as_MySQLdb()
4.编写模型类
class Department(models.Model):
dep_name = models.CharField(max_length=20, verbose_name='部门名称')
desc = models.CharField(max_length=50, verbose_name='部门描述')
class Meta:
verbose_name = '部门表'
verbose_name_plural = verbose_name
db_table = 'department'
def __str__(self):
return self.dep_name
class Employee(models.Model):
emp_name = models.CharField(max_length=20, verbose_name='员工姓名')
job = models.CharField(max_length=20, verbose_name='职位')
salary = models.IntegerField(default=0, verbose_name='工资')
department = models.ForeignKey(to=Department, on_delete=models.CASCADE)
class Meta:
verbose_name = '员工表'
verbose_name_plural = verbose_name
db_table = 'employee'
def __str__(self):
return self.emp_name
5.注册模型类到admin站点
from django.contrib import admin
from myapp.models import Department, Employee
# Register your models here.
admin.site.register(Department)
admin.site.register(Employee)
6.添加测试数据
创建超级用户 python.exe .\manage.py createsuperuser
运行项目添加测试数据
7.路由配置
在子应用中创建urls.py文件,用于存放子路由
配置与项目同名文件夹下的urls.py文件(主路由)
from django.contrib import admin
from django.urls import path, include
from myapp import urls
urlpatterns = [
path('admin/', admin.site.urls),
path('', include(urls)),
]
编写子路由代码
from django.urls import path
urlpatterns = [
]
8.编写序列化器代码
在子应用中创建serializers.py文件,添加以下代码:
from rest_framework import serializers
from myapp.models import Department, Employee
class DepartmentSerializer(serializers.ModelSerializer):
class Meta:
model = Department
fields = '__all__'
class EmployeeSerializer(serializers.ModelSerializer):
class Meta:
model = Employee
fields = '__all__'
9.编写视图代码,实现部门数据 和 员工数据 的 增删查改
from rest_framework.generics import ListCreateAPIView, RetrieveUpdateDestroyAPIView
from myapp.models import Department, Employee
from myapp.serializers import DepartmentSerializer, EmployeeSerializer
class DepartmentView1(ListCreateAPIView):
queryset = Department.objects.all()
serializer_class = DepartmentSerializer
class DepartmentView2(RetrieveUpdateDestroyAPIView):
queryset = Department.objects.all()
serializer_class = DepartmentSerializer
class EmployeeView1(ListCreateAPIView):
queryset = Employee.objects.all()
serializer_class = EmployeeSerializer
class EmployeeView2(RetrieveUpdateDestroyAPIView):
queryset = Employee.objects.all()
serializer_class = EmployeeSerializer
10.添加子路由
from django.urls import path
from myapp import views
urlpatterns = [
path('dep/', views.DepartmentView1.as_view()),
path('dep/<int:pk>/', views.DepartmentView2.as_view()),
path('emp/', views.EmployeeView1.as_view()),
path('emp/<int:pk>/', views.EmployeeView2.as_view()),
]
边栏推荐
猜你喜欢
随机推荐
pwn-ROP
Qt在QTableWidget、View等表格中添加右击菜单
三子棋游戏实现(c语言)
MySQL 灵魂 16 问,你能撑到第几问?
Machine Learning - Gradient Descent Optimization - C language implementation
安装Nuxt.js时出现错误:TypeError:Cannot read property ‘eslint‘ of undefined
navicat无法连接mysql超详细处理方法
665.非递减数列
C语言(字符串,转义字符,关键字)
MySql fuzzy query Daquan
934.最短的桥(广度优先搜索)
MySQL (2)
What is SOA (Service Oriented Architecture)?
Difference between cookie and session
MySQL的存储过程
函数解剖——深挖printf()与scanf()
50道SQL练习题(刷完直接进大厂)
Arrange numbers (DAY90) dfs
C语言指针(指针数组、数组指针、函数指针、传参、回调函数等)超详细
Different usage scenarios of subqueries as retrieval tables and the question of whether to add aliases









