【发布时间】:2017-05-24 12:20:02
【问题描述】:
我得到这个error 虽然我在文本和标题字段中给出了正确的字符串。我不知道是什么原因,但是我能够发布剩余三个字段的值(作者、创建日期、发布日期)。
序列化器.py
from rest_framework import serializers
from blog.models import Post
from django.utils import timezone
from rest_framework.validators import UniqueValidator
class blogSerializer(serializers.ModelSerializer):
class Meta:
model = Post
fields = ('author','title', 'text','created_date','published_date')
模型.py
from django.db import models
from django.utils import timezone
class Post(models.Model):
author = models.ForeignKey('auth.User',null=True)
title = models.CharField(max_length=200)
text = models.CharField(max_length=200)
created_date = models.DateTimeField(
default=timezone.now)
published_date = models.DateTimeField(
blank=True,null=True)
def publish(self):
self.published_date = timezone.now()
self.save()
def __str__(self):
return self.title
views.py
from blog.models import Post
from .serializers import UserSerializer, GroupSerializer,blogSerializer
from rest_framework import viewsets,status
from rest_framework.decorators import api_view
class blogViewSet(viewsets.ModelViewSet):
queryset = Post.objects.all()
serializer_class = blogSerializer
我在这里发布数据。
@api_view(['GET', 'POST'])
def blog_list(request):
if request.method=='GET':
my_blog=Post.objects.all()
serializers=blogSerializer(my_blog,Many=True)
return JsoResponse(serializers.data,safe=False)
elif request.method=='POST':
data=JSONParser().parse(request)
serializers=blogSerializer(data=data)
if serializers.is_valid():
serializer.save()
return JsonResponse(serializers.data,status=201)
return JsonResponse(serializers.errors,status=400)
【问题讨论】:
-
您收到错误消息,因为文本和标题是必需的并且为空。如果您希望它们是可选的,请将
blank=True, null=True添加到模型中。 -
@Razzildinho 他声称他为这两个字段提供了正确的字符串。
-
不,我在这两个字段中给出了正确的字符串,但仍然抛出相同的错误。
-
您是否仅使用可浏览的 API 进行了尝试?如果您在 shell 中尝试这样做会发生什么,例如:
curl -X POST -H "Accept: application/json" -H "Content-Type: application/json" -d '{"title": "Some title", "text": "Some text"}' http://localhost:8000。如果需要更改http://localhost:8000。 -
我建议覆盖 create 函数(或事件 post 函数)并打印调试消息。例如打印 request.data
标签: python django django-models django-rest-framework