【发布时间】:2020-09-05 00:06:38
【问题描述】:
我有一个基于 django 的网站,其中包含用户配置文件系统,用户可以在其中添加注释。我正在尝试通过 REST 框架实现 CRUD。我按照本教程进行操作:
https://dev.to/nobleobioma/build-a-crud-django-rest-api-46kc
我已经修改了代码。我有一个名为 Note 的模型,这是模型的代码:
class Note(models.Model):
author = models.ForeignKey(User, on_delete=models.CASCADE, related_name="notes")
type = models.IntegerField(choices=NOTE_TYPE, default=0)
updated_on = models.DateTimeField(auto_now=True)
content = models.TextField()
created_on = models.DateTimeField(auto_now_add=True)
class Meta:
ordering = ["-created_on"]
视图类如下:
@api_view(["POST"])
@permission_classes([IsAuthenticated])
@csrf_exempt
def add_note(request):
payload = json.loads(request.body)
user = request.user.id
note = Note.objects.create(
type=payload["type"],
content=payload["content"],
author=user,
)
serializer = NoteSerializer(note)
return JsonResponse({'notes': serializer.data}, safe=False, status=status.HTTP_201_CREATED)
当我运行服务器时,所有其他 URL 都可以工作,但链接到此类的 URL 给了我以下错误:
从 None 提高 JSONDecodeError("Expecting value", s, err.value) json.decoder.JSONDecodeError:预期值:第 1 行第 1 列(字符 0)
似乎错误是由该行引起的:
payload = json.loads(request.body)
我已经尝试了许多类似错误的解决方案,但似乎没有任何帮助。
这是序列化程序:
class NoteSerializer(serializers.ModelSerializer):
class Meta:
model = Note
fields = ['type', 'content']
【问题讨论】:
-
你能分享
serializers.py文件吗?还有可以分享serializer.data的内容吗? -
感谢您指出这一点,我已经编辑了帖子。