zoukankan      html  css  js  c++  java
  • django rest framework之序列化

    首先找到models文件,然后里面写上内容,自定义

    class UserGroup(models.Model):
        title = models.CharField(max_length=32)
    
    
    class UserInfo(models.Model):
        name = models.CharField(verbose_name="姓名",max_length=255)
        age = models.IntegerField(verbose_name="年龄")
        choice = (
            (1, '男人'),
            (2, '女人'),
            (3, '其他')
        )
        sex = models.IntegerField(verbose_name="性别",choices=choice)
        address = models.CharField(verbose_name="地址",max_length=255)
        ug = models.ForeignKey(UserGroup,default=1,on_delete=models.CASCADE)

    然后同步数据库,然后往数据库里这两张表添加内容,完毕之后回到视图函数,里面写上代码逻辑,首先定义一个序列化类

    from rest_framework import serializers
    """
    先要创建一个类继承Serializers
    """
    class UserSerializers(serializers.Serializer):
        """序列化字段和数据库必须一样"""
        name = serializers.CharField()
        age = serializers.CharField()
        sex = serializers.IntegerField()
        address = serializers.CharField()
        # source 来源于,就是让页面不再显示对象而是数据库的字段
        ug = serializers.CharField(source='ug.title')

    接下来开始写逻辑代码

    from rest_framework import views
    from rest_framework.views import Response
    from app1 import models
    
    class SerializersViews(views.APIView):
        def get(self,request,*args,**kwargs):
            # user_list = models.UserInfo.objects.filter()
            user_list = models.UserInfo.objects.filter()
            # 选择序列化类,如果是多个,many=True,如果是单个,many=False
            sls = UserSerializers(instance=user_list,many=True)
            # sls = UserSerializers(instance=user_list,many=False)
            # sls.data 已经序列化数据库所需字段
            return Response(sls.data)

    完整代码如下:

    from django.shortcuts import render,HttpResponse
    from rest_framework import views
    from rest_framework import serializers
    from rest_framework.views import Response
    from app1 import models
    # Create your views here.
    """
    先要创建一个类继承Serializers
    """
    class UserSerializers(serializers.Serializer):
        """序列化字段和数据库必须一样"""
        name = serializers.CharField()
        age = serializers.CharField()
        sex = serializers.IntegerField()
        address = serializers.CharField()
        # source 来源于,就是让页面不再显示对象而是数据库的字段
        ug = serializers.CharField(source='ug.title')
    
    
    
    
    class SerializersViews(views.APIView):
        def get(self,request,*args,**kwargs):
            # user_list = models.UserInfo.objects.filter()
            user_list = models.UserInfo.objects.filter()
            # 选择序列化类,如果是多个,many=True,如果是单个,many=False
            sls = UserSerializers(instance=user_list,many=True)
            # sls = UserSerializers(instance=user_list,many=False)
            # sls.data 已经序列化数据库所需字段
            return Response(sls.data)
    完整代码

    写完之后,在你的urls里面写上

    from django.contrib import admin
    from django.urls import path
    from app1 import views
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('Serializers/', views.SerializersViews.as_view()), # 添加这一行
    ]

    之后在你的配置文件中

    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'app1.apps.App1Config',
        'rest_framework', # 配置上
    ]

    好了,上面完成之后,直接启动系统,网页输入url可以看到内容了,不知道为啥无法粘贴图片了,看代码吧

    [
        {
            "name": "陈晨",
            "age": "20",
            "sex": 1,
            "address": "河北邯郸",
            "ug": "A组"
        },
        {
            "name": "付霞",
            "age": "15",
            "sex": 2,
            "address": "甘肃庆阳",
            "ug": "B组"
        }
    ]

    这是用postman测试的,可以看到已经把数据json好了

  • 相关阅读:
    Server Tomcat v8.5 Server at localhost failed to start.
    使用bootstrap中的bootstrapValidator,验证ckeditor富文本框不为空
    百度WebUploader上传图片,图片回显编辑,查看
    百度WebUploader上传图片
    做webapp静态页面的一些积累
    ztree插件的使用
    highcharts曲线图
    ajax的表单提交,与传送数据
    一条数据中需要遍历多条数据,页面遍历方法
    在页面中使用拼接字符串的方式显示动态加载的数据
  • 原文地址:https://www.cnblogs.com/ArkhamKnight/p/9429695.html
Copyright © 2011-2022 走看看