无法使用AJAX进行POST请求,但可以通过可浏览的API在使用Django Rest Framework时执行此操作

weixin_38063515 2019-09-12 03:22:09

第一次使用Django时,我使用DRF构建了一个简单的API,并且我使用的视图是框架提供的通用视图。我的模型中有一个JSONField,我在序列化程序类中使用了DictField。使用可浏览的API时,所有不同的HTTP请求都可以工作。我甚至可以使用JQuery对所有项目或单个项目发出GET请求,但是我无法使用与使用可浏览API进行相同请求时提供的相同数据发出发布请求。 我的序列化器类如下: class ChartsSerializer(serializers.ModelSerializer): jsonData = serializers.DictField() owner = serializers.ReadOnlyField(source='owner.username') class Meta: model = Charts fields = ('id', 'chartName', 'description', 'isPrivate', 'jsonData', 'owner') 默认情况下使用ModelSerializer类jsonData字段默认为使用CharField作为SerializerField时。 在可浏览的API中提供的默认模板提供了一个空的列表,我用一个对象替换它。 并使用HTML表单标签,使POST请求时,我得到了同样的错误。 我更新了perform_create方法,以确保在调用save方法时传递给序列化程序的数据是字典。 class ChartsList(generics.ListCreateAPIView): queryset = Charts.objects.all() serializer_class = ChartsSerializer permission_classes = (permissions.IsAuthenticatedOrReadOnly,) def perform_create(self, serializer): print(self.request.data) serializer.save(owner=self.request.user, \ jsonData=self.request.data.get('josnData')) 如果有任何错误或需要更多信息,我会提供。








...全文
81 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38074560 2019-09-12
  • 打赏
  • 举报
回复

错误发生在ajax()方法调用中,contentType属性未被正确设置。当使用框架提供的通用视图时,DRF自动选择适当的解析器。它通过查看正在设置的content-type标题来完成此操作,这是通过设置contentType属性完成的。

435

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧