我是靠谱客的博主 呆萌电话,这篇文章主要介绍rest_framework序列化组件校验,现在分享给大家,希望可以做个参考。

在views中

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
from django.shortcuts import render # Create your views here. from rest_framework.viewsets import ViewSetMixin from rest_framework.views import APIView from rest_framework.response import Response from app01 import Myser from app01 import models from app01.myutils.Myresponse import Responseone class Book(ViewSetMixin,APIView):     def get_book(self,request,*args,**kwargs):         ret=models.Book.objects.all()         ser=Myser.BookSer(instance=ret,many=True)         return Response(ser.data)     def set_book(self,request,*args,**kwargs):         myres=Responseone()         print(request.data)         ser=Myser.BookSer(data=request.data)         if ser.is_valid():             ser.save()             myres.msg='创建成功'         else:             myres.status=400             myres.msg=ser.errors         return Response(myres.get_dic)     def change_book(self,request,pk,*args,**kwargs):         print(pk)         myres = Responseone()         ret = models.Book.objects.all().filter(pk=pk).first()         ser = Myser.BookSer(instance=ret,many=False,data=request.data)         # 传instance和data是进行修改         if ret:             if ser.is_valid():                 ser.save()                 myres.msg = '修改成功'             else:                 myres.status=401                 myres.msg = ser.errors                 print(ser.errors)                 print(Response(myres.get_dic))         else:             myres.msg='用户不存在'             myres.status=403         return Response(myres.get_dic)                            在路由中 url(r'^book/(?P<pk>d+)', views.Book.as_view({'get':'get_book','put':'change_book','post':'set_book'})), 在校验类中 校验的是前台传过来的数据 from rest_framework.exceptions import ValidationError from app01 import models from rest_framework import serializers class BookSer(serializers.ModelSerializer):     class Meta:         model=models.Book         fields='__all__'         print(fields)     name=serializers.CharField(max_length=4,min_length=2,required=True,error_messages={'max_length':'最长为4','min_length':'最短为2','required':'姓名必须填写'})                            # 局部钩子:         def validate_name(self, value):             # print(value)             if value.startswith('sb'):                 # 不能以sb开头                 raise ValidationError('不能以sb开头')             else:                 return value              # 全局钩子找到了         def validate(self, value):             # value是所有校验通过数据的字典             print(value)             name = value.get('name')             price = value.get('price')             if name and price:                 if str(name) == str(price):                     return value                 else:                     raise ValidationError('名字跟价格不相等')             return value


转载于:https://blog.51cto.com/14127188/2338513

最后

以上就是呆萌电话最近收集整理的关于rest_framework序列化组件校验的全部内容,更多相关rest_framework序列化组件校验内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(96)

评论列表共有 0 条评论

立即
投稿
返回
顶部