• 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
             
    
  • 相关阅读:
    Linux下中文乱码
    hive配置元数据库mysql文件配置
    centos7安装mysql5.6
    mapreduce案例:获取PI的值
    hadoop第一个程序WordCount
    centos7搭建伪分布式集群
    Centos7永久关闭防火墙
    centos7设置静态ip
    大数据技术之kettle
    2020/6/20 mysql表连接和子查询
  • 原文地址:https://www.cnblogs.com/mbitions/p/13886761.html
Copyright © 2020-2023  润新知