Python 验证方法未调用django rest框架
我试图在modelSerializer上测试验证方法,但它未被调用 为什么不工作?我错过什么了吗?相同的场景适用于不同的项目 在URL上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
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是的,我知道了,谢谢