zoukankan      html  css  js  c++  java
  • Django框架中序列化与反序列化与字段验证

    1.Django序列化

    DRF的核心 就是 前后端分离的核心

    • 前后端分离开发的核心:

      将模型转换为json 称之为 序列化
      将json转换为模型 称之为 反序列化
      

    2.创建模型

                '''models.py'''
    
    from django.db import models
    
    class User(models.Model):
        username = models.CharField(max_length=32)
        age = models.IntegerField(default=18, null=True)
        home = models.CharField(max_length=32, null=True)
    
        class Meta:
            db_table = 'user'
    
    

    3.序列化、反序列化、字段验证

    • 为了得到模型里的字段,序列化器中的字段应与模型类中的字段名一致
          '''serializers.py'''
    
    from .models import *
    from .views import *
    from rest_framework import serializers
    
    class UserSerializers(serializers.Serializer): 
    
        username = serializers.CharField(max_length=32)
        age = serializers.IntegerField()       
        home = serializers.CharField(max_length=32)
          
        # 添加数据
        '''
           validated_data:接收的数据
        '''
        def create(self, validated_data):
            return User.objects.create(**validated_data)
          
        # 更新数据
        def update(self, instance, validated_data):
            '''
                instance:数据库中原值
                validated_data:接收的新值
                如果接收到新值,更新数据库中的旧值,如果没有不更改
            '''  
            instance.username = validated_data.get('username',instance.username)
            instance.age = validated_data.get('age',instance.age)
            instance.home = validated_data.get('home',instance.home)
            instance.save()
            return instance
    
        '''
           单一字段验证:验证用户名
           validate_字段名:必须是字段名
           如果用户名不是张三,就抛出错误
        '''
        def validate_username(self, attrs):
            if attrs != '张三':
                raise serializers.ValidationError('不是本人')
            return attrs
             
    
  • 相关阅读:
    IIS iframe嵌套的别人的页面 突然就打不开了
    C#基础知识之可空类型
    EditorConfig插件和ESLint
    ES6-ES11新语法之ES10
    ES6-ES11新语法之ES9
    pipenv快速入门
    Pycharm拉取git仓库代码
    【pytest学习10】pytest报告,html,allure
    jira&confluence之什么是epic/feature/story/task
    【pytest学习9】usefixture的简单使用
  • 原文地址:https://www.cnblogs.com/mbitions/p/13886761.html
Copyright © 2011-2022 走看看