对象转换为字符串用于传输,在前台使用
字符串转换为对象用于在后端环境使用
序列化: model类对象转换为字符串用于传输,在前台使用
反序列化: 字符串转换为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
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
urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path(‘admin/‘, admin.site.urls),
path(‘api/‘, include(‘api.urls‘))
]
urls.py
from django.urls import path
from api import views
urlpatterns = [
path(‘user/‘, views.UserView.as_view()),
]
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
}
})
序列化一个Model类对象就是序列化该类的每一个属性变成字符串给前端使用
from rest_framework import serializers
class Userserializers(serializers.Serializer):
# 序列化一个Model类对象就是序列化该类的每一个属性变成字符串给前端使用
name = serializers.CharField()
password = serializers.CharField()
sex = serializers.IntegerField()
create_time = serializers.DateTimeField()
原文:https://www.cnblogs.com/cjwnb/p/14274889.html