首页 > 其他 > 详细

DRF(一)

时间:2021-01-13 23:54:27      阅读:59      评论:0      收藏:0      [点我收藏+]

1. 序列化


1.1 什么是序列化

对象转换为字符串用于传输,在前台使用


1.2 什么是反序列化

字符串转换为对象用于在后端环境使用


1.3 DRF序列化

序列化: model类对象转换为字符串用于传输,在前台使用

反序列化: 字符串转换为model类对象用于在后端环境使用


1.4 Model类

from django.db import models

class User(models.Model):
    CHOICE_SEX = (
        (0, ‘男‘),
        (1, ‘女‘)
    )
    name = models.CharField(max_length=32, verbose_name=‘姓名‘)
    password = models.CharField(max_length=64, verbose_name=‘密码‘)
    sex = models.SmallIntegerField(choices=CHOICE_SEX, default=0)
    create_time = models.DateTimeField(auto_now_add=True, blank=True)

    class Meta:
        db_table = ‘o_user‘  # 自定义创建的表名
        verbose_name = ‘用户‘  # admin/xadmin 界面中显示的表名
        verbose_name_plural = verbose_name  # admin/xadmin 界面中显示的表名复数形式

    def __str__(self):
        return self.name

  • 注册到admin
from django.contrib import admin
from api.models import User

admin.site.register(User)

  • 创建数据库
python3 manage.py makemigrations api
python3 manage.py migrate
python3 manage.py createsuperuser

设置账号密码 chenjiawei520| 123456


1.5 路由分发

  • 项目 urls.py
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path(‘admin/‘, admin.site.urls),
    path(‘api/‘, include(‘api.urls‘))
]

  • 应用(api)urls.py
from django.urls import path
from api import views

urlpatterns = [
    path(‘user/‘, views.UserView.as_view()),
]

1.6 视图函数

from rest_framework.response import Response
from rest_framework.views import APIView
from api.models import User
from .Serializers import Userserializers


class UserView(APIView):
    def get(self, request, *args, **kwargs):
        user_list = User.objects.all()
        print(user_list)
        # 序列化model类的对象 - 序列化类(model类QuerySet对象)
        # 序列化类的初始化方法(BaseSerializer)有三个参数
        # instance 序列化 |data 反序列化 | many 是否有多个数据
        # class BaseSerializer(Field):
        #     def __init__(self, instance=None, data=empty, **kwargs):
        #         self.instance = instance
        #         if data is not empty:
        #             self.initial_data = data
        #         self.partial = kwargs.pop(‘partial‘, False)
        #         self._context = kwargs.pop(‘context‘, {})
        #         kwargs.pop(‘many‘, None)
        #         super().__init__(**kwargs)
        user_data = Userserializers(instance=user_list, many=True).data
        return Response({
            ‘code‘: 200,
            ‘content‘: {
                ‘msg‘: ‘SUCCESS‘,
                ‘data‘: user_data
            }
        })

1.7 序列化器

序列化一个Model类对象就是序列化该类的每一个属性变成字符串给前端使用

from rest_framework import serializers


class Userserializers(serializers.Serializer):
    # 序列化一个Model类对象就是序列化该类的每一个属性变成字符串给前端使用
    name = serializers.CharField()
    password = serializers.CharField()
    sex = serializers.IntegerField()
    create_time = serializers.DateTimeField()

DRF(一)

原文:https://www.cnblogs.com/cjwnb/p/14274889.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!