【发布时间】:2018-12-07 03:46:27
【问题描述】:
我正在尝试执行 POST 请求来创建文章,但我收到此错误 Request failed with status code 400 Bad Request: /api/articles/create/。
一篇文章需要创建 3 个属性:
(1) 标题
(2) 身体
(3) 作者(当前用户)
路由器工作正常,因为 POST 请求进入 ArticleCreateView 类的 post 方法。但我猜serializer.is_valid() 出于某种原因返回False。
同样print(request.data) 返回{'title': 'hello', 'body': 'stuff'}
关于 Django 的另一个谜团是,序列化程序如何知道我是否想要获取、创建或更新某些内容?在我见过的所有示例中,序列化程序似乎神奇地知道这一点。
class ArticleCreateView(CreateAPIView):
permission_classes = [IsAuthenticated]
def post(self, request):
serializer = ArticleSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
return Response(serializer.errors)
class ArticleSerializer(serializers.ModelSerializer):
class Meta:
model = Article
fields = '__all__'
def create(self, validated_data):
author = self.context['request'].user
title = validated_data.get('title')
body = validated_data.get('body')
return Article.objects.create(author=author, title=title, body=body)
class Article(models.Model):
author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
title = models.CharField(max_length=100)
body = models.TextField(max_length=100)
date_updated = models.DateTimeField(auto_now=True)
date_created = models.DateTimeField(auto_now_add=True)
【问题讨论】:
-
可以加
Article模特吗? -
@JPG 我已经添加了
-
也添加您的 AUTH_USER_MODEL
-
@nishant AUTH_USER_MODEL 我认为是 Django 内置的东西
标签: django model-view-controller django-rest-framework serialization django-serializer