【发布时间】:2021-02-28 20:04:22
【问题描述】:
所以今天我第一次尝试在我的项目中实现 Django REST 框架,一切正常我可以使用框架提供的浏览器界面创建、更新和删除帖子,但是在集成了JWT 令牌并尝试使用 curl 创建帖子我总是收到消息 "":["This field is required."] 。我尝试以多种方式对其进行故障排除,但无法解析我需要正确解析的字段。我什至可以使用 curl 创建一个帖子,但我必须将字段修改为全部为“空值”。我是否发送了错误的 curl 请求?
curl: (请注意,如果我添加 -H "Content-Type: application/json" 我得到这个输出 {"detail":"JSON parse error - Expecting property name enclosed in double quotes: line 1 column 2 (char 1)"} 已经在这里解决了 Json parse error using POST in django rest api 通过删除内容类型标题)编辑:忽略我刚才所说的内容类型标题,这是我的一个误解
curl -X POST -H "Authorization: JWT <token>" -d '{
"title": "Helloooo",
"content": "Hi",
"schools": null,
"course": null,
"classes": [
1
],
"isbn": 12312,
"semester": null,
"visible": false
}' 'http://127.0.0.1:8000/api/posts/create/?type=post'
这是我在发送 POST 请求后从终端得到的输出:
{"title":["This field is required."],"content":["This field is required."],"classes":["This list may not be empty."]}
这是我的其余代码:
序列化器:
class PostCreateSerializer(ModelSerializer):
date_posted = serializers.HiddenField(default=timezone.now)
class Meta:
model = Post
fields = [
"title",
"content",
"schools",
"course",
"classes",
"isbn",
"semester",
"visible",
"date_posted",
]
观看次数:
class PostCreateAPIView(CreateAPIView):
queryset = Post.objects.all()
serializer_class = PostCreateSerializer
def perform_create(self, serializer):
serializer.save(author=self.request.user)
网址:
urlpatterns = [
path(r"", PostListAPIView.as_view(), name="List-API"),
path("create/", PostCreateAPIView.as_view(), name="Create-API") ]
设置:
REST_FRAMEWORK = {
"DEFAULT_RENDERER_CLASSES": [
"rest_framework.renderers.JSONRenderer",
"rest_framework.renderers.BrowsableAPIRenderer",
],
"DEFAULT_AUTHENTICATION_CLASSES": [
"rest_framework.authentication.SessionAuthentication",
"rest_framework_jwt.authentication.JSONWebTokenAuthentication"
],
"DEFAULT_PERMISSION_CLASSES": [
"rest_framework.permissions.IsAuthenticated"
],
}
感谢您花时间阅读所有这些内容!
【问题讨论】:
-
这个问题可能在windows中。是真的吗?
-
你的意思是操作系统窗口吗?是的,我正在使用 powershell 7 发出请求
-
我编辑了我的答案。问题在于在 Windows 操作系统中使用单引号作为正文。
标签: django curl django-rest-framework request