DRF单表序列化和反序列化

  • 安装 djangorestframework

    pip install djangorestframework
  • 将rest_framework注册到app上
    INSTALLED_APPS = [
        ‘rest_framework‘,
        ‘app01‘
        ....
    ]
  • urls
    from django.urls import path
    from . import views
    urlpatterns = [
        path(‘index/‘,views.UserView.as_view())
    ]
  • 在models.py
    from django.db import models
    
    # 用户
    class User(models.Model):
        name = models.CharField(max_length=32,unique=True,null=True)
  • 在 app01 文件下 新建 serializer.py
    from rest_framework import serializers
    from .models import User
    
    # 序列化
    class UserSerializers(serializers.ModelSerializer):
    
        class Meta:
            model = User
            fields = ‘__all__‘
    
    # 反序列化
    class UserUnSerializer(serializers.Serializer):
        name = serializers.CharField(max_length=32)
        password = serializers.CharField(max_length=255)
    
        # 添加数据
        def create(self,data):
            return User.objects.create(**data)
    
        # 更新数据
        def update(self,instance,data):
            return instance.update(**data)
    
  • 在 views
    from rest_framework.response import Response
    from rest_framework.views import APIView
    from . import models
    from .serializer import UserSerializers
    
    class UserView(APIView):
    
        def get(self,request):
          user = models.User.objects.all()
            # 序列化 将对象转成json串
            data = UserSerializers(user,many=True)
            return Response(data)
    
         # 添加数据
        def post(self,request):
            name = request.POST.get(‘name‘,‘‘).strip()
            password = request.POST.get(‘password‘,‘‘).strip()
            dic = {"name":name,"password":password}
            user = UserUnSerializer(data=dic)
            if user.is_valid():
                user.save()
                return HttpResponse(‘post-ok‘)
            return HttpResponse(‘post-no‘)
    
        # 更新数据
        def put(self,request):
            id = request.POST.get(‘id‘,‘0‘)
            obj = models.User.objects.filter(id=id)
            name = request.POST.get(‘name‘,‘‘).strip()
            dic = {"name":name}
            user = UserUnSerializer(obj,data=dic)
            if user.is_valid():
                user.save()
                return HttpResponse(‘put-ok‘)
            return HttpResponse(‘put-no‘)

原文地址:https://www.cnblogs.com/nbzyf/p/12066945.html

时间: 2024-07-30 15:33:28

DRF单表序列化和反序列化的相关文章

12.25 单表序列化与反序列化

一.自定义序列化: 所有的逻辑写在单查群查这个视图类里,如果业务逻辑复杂,视图类会超级大. class UserV1APIView(APIView): #单查群查 def get(self,request,*args,**kwargs): pk=kwargs.get('pk') if pk: user_dic=models.User.objects.filter(is_delete=False,pk=pk).values('username','sex','img').first() if no

DRF 一对多序列化与反序列化

DRF 一对多序列化与反序列化 序列化 出库的过程,是从数据库中把数据读出并以json的形式供前端使用 反序列化 入库的过程,是从前端将数据传入到views.py的函数或者类中,经过后台逻辑处理,最终写到数据库中. 安装 djangorestframework pip install djangorestframework 注册到INSTALL_APPS中 INSTALLED_APPS = [ ... 'rest_framework', ] 配置数据库 DATABASES = { 'defaul

DRF一对多序列化和反序列化

DRF一对多序列化和反序列化 models.py # 商品分类 class Category(models.Model): name = models.CharField(max_length=32) # 商品 class Goods(models.Model): name = models.CharField(max_length=32) price = models.DecimalField(max_digits=9,decimal_places=2) cate = models.Forei

DRF框架(三)——media资源路径设置、多表序列化(ModelSerializer)、多表反序列化、多表序列化与反序列化整合(重点)

media资源路径设置  (设置好后把图片放在这个文件夹中,通过链接能访问到图片) 1.先在根目录设置一个media文件夹 2.配置settings.py,加上下面的 MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASE_DIR, 'media') 3.在urls.py路由设置 from django.views.static import serve from django.conf import settings urlpatterns =

drf中的序列化家族

序列化家族:Serializer类;modelSerializer类和ListSerializer类 """1.Serializer类:底层序列化-了解的类 重点:单表序列化 2.modelSerializer类:模型序列化类-核心类 重点:多表序列化 3.ListSerializer类:群操作序列化类-辅助类 重点:辅助完成单表多表群增群改操作""" import sys # 标准输出流 sys.stdout.write('123\n') sy

子序列化,多表序列化

目录 二次封装 Response 数据库关系分析 ORM 操作关系 基表 序列化类其他配置(了解) 子序列化 多表序列化与反序列化 二次封装 Response # 新建response.py文件 from rest_framework.response import Response class APIResponse(Response): def __init__(self, status=0, msg='ok', http_status=None, headers=None, excepti

ModelSerializer(重点) 基表 测试脚本 多表关系建外键 正反查 级联 插拔式连表 序列化反序列化整合 增删查 封装response

一.前戏要做好 配置:settings.py #注册drf INSTALLED_APPS = [ # ... 'api.apps.ApiConfig', 'rest_framework', ] ? #配置数据库 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'dg_proj', 'USER': 'root', 'PASSWORD': '123', } } """ 在任何(根或者

drf序列化与反序列化

序列化器-Serializer 定义序列化器 Django REST framework中的Serializer使用类来定义,须继承自rest_framework.serializers.Serializer. 例如,我们已有了一个数据库模型类BookInfo class BookInfo(models.Model): btitle = models.CharField(max_length=20, verbose_name='名称') bpub_date = models.DateField(

内部类,drf响应类,序列化与反序列化

内部类 # 概念:将类定义在一个类的内部,被定义的类就是内部类 # 特点:内部类及内部类的所以名称空间,可以直接被外部类访问的 # 应用:通过内部类的名称空间,给外部类额外拓展一些特殊的属性(配置),典型的Meta内部类 - 配置类 class Book(model.Model): class Meta: db_model = "owen_book" # 配置自定义表名 class BookSerializer(serializers.ModelSerializer): class M