drf -- ModelSerializer的用法

类似ModerForm的用法

1.serializers.py代码示例:

from rest_framework import serializers
from student import models

class StudentModelSerializers(serializers.ModelSerializer):
    class Meta:
        model = models.Student
        fields = "__all__"
        #该字段表示在只读,在添加数据时,不能写,只能写字段中声明的字段
        read_only_fields = ['id']

2.views.py代码示例:

from django.views import View
from django.http import HttpResponse,JsonResponse
from unsers.serializers import StudentSerializer,StudentModelSerializers
from student import models
import json
# Create your views here.
class StudentView(View):

    def get(self,request):
        stu_obj = models.Student.objects.all()
        serializers =StudentModelSerializers(instance=stu_obj,many=True)
        return JsonResponse(serializers.data,safe=False)

    def post(self,request):
        data = json.loads(request.body)
        serializers = StudentModelSerializers(data=data)
        serializers.is_valid(raise_exception=True)
        serializers.save()
        return HttpResponse("添加成功")

    def put(self,request):
        data = json.loads(request.body)
        id= data.get("id")
        stu_obj = models.Student.objects.get(id=id)
        serializers = StudentModelSerializers(instance=stu_obj,data=data)
        serializers.is_valid(raise_exception=True)
        serializers.save()
        return HttpResponse('修改成功')

posted @   志强爱璇璇  阅读(33)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示