Python 验证方法未调用django rest框架

Python 验证方法未调用django rest框架,python,django,rest,django-rest-framework,Python,Django,Rest,Django Rest Framework,我试图在modelSerializer上测试验证方法,但它未被调用 为什么不工作?我错过什么了吗?相同的场景适用于不同的项目 在URL上 urlpatterns = [ path('api/allposts/', allposts, name='allposts') ] 意见: from .serializer import PostSerializer from rest_framework.renderers import JSONRenderer from .models import

我试图在modelSerializer上测试验证方法,但它未被调用

为什么不工作?我错过什么了吗?相同的场景适用于不同的项目

在URL上

urlpatterns = [ path('api/allposts/', allposts, name='allposts') ]
意见:

from .serializer import PostSerializer
from rest_framework.renderers import JSONRenderer
from .models import Post
from django.http import JsonResponse
import json

def allposts(request):
    qs = Post.objects.all()[:3]
    ser = PostSerializer(qs, many=True)
    data = JSONRenderer().render(ser.data)
    return JsonResponse(json.loads(data), safe=False)
在模型上

class Post(models.Model):
    title = models.CharField(max_length=100)
    url = models.URLField()
    poster = models.ForeignKey(User, on_delete=models.CASCADE, related_name='posts')
    created = models.DateTimeField(auto_now_add=True)

    class Meta:
        ordering = ['-created']

    def __str__(self):
         return self.title
at序列化程序

from rest_framework import serializers
from .models import Post


class PostSerializer(serializers.ModelSerializer):

    class Meta:
        model = Post
        fields = ['title', 'poster', 'url']

    def validate(self, data):
        if 'facebook' in data.get('url'):
            raise serializers.ValidationError('you can not add facebook')
        return data

调用
序列化程序时,将调用序列化程序的验证方法。is\u valid()
。由于您正在序列化db实例,因此不需要调用
is\u valid()
,因此不调用
validate()
方法

在调用serializer.is\u valid()时调用serializer的validate方法。由于您正在序列化db实例,所以不需要调用is\u valid(),因此validate()方法不可用called@Vikramark是的,我知道了,谢谢