P3 元宝序列化笔记

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()),
]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值