【问题标题】:Django Rest Framework how to post data on the browsable APIDjango Rest Framework 如何在可浏览的 API 上发布数据
【发布时间】:2016-03-24 09:00:36
【问题描述】:

我对 Django Rest Framework 有点陌生。我知道可以使用 Browsable API 发布数据,我只是不知道如何。我有这个简单的看法:

class ProcessBill(APIView):

    def post(self, request):

        bill_data = request.data
        print(bill_data)

        return Response("just a test", status=status.HTTP_200_OK)

当我转到指向该视图的 url 时,我得到了带有来自服务器 method not allowed 的响应的 rest_framework 可浏览 api 视图,这是可以理解的,因为我没有设置 def get() 方法。但是......我怎样才能发布数据?我期待某种形式的某个地方。

编辑 这是可浏览 API 如何为我寻找的屏幕截图,它是西班牙语。 view 和我上面写的一样,但是是西班牙语。如您所见...没有 POST 数据的表单:/ .

【问题讨论】:

  • 您一定会看到下面标记为 - Content 的文本框。你能分享一下你的浏览器窗口的截图吗?
  • @RohitJain Thans 的答案。刚刚将其添加为编辑。
  • 您需要在视图中定义get_serializer_class() 方法或serializer_class 属性。
  • @RohitJain 做到了,但它不起作用。此外,解决它也没有多大意义。您能否指出我的文档,我试图查找有关“设置”可浏览 Api 的信息,但找不到任何信息。看起来它应该开箱即用。
  • @alejoss 我认为您的发布方法需要接受format kwarg,但据我所知,发布通常应该有效。您是否尝试过从命令行发布一些数据(即使用curl?)以查看服务器是否接受它?

标签: python django django-rest-framework


【解决方案1】:

用户很可能拥有只读权限。如果是这种情况,请确保用户已通过正确的身份验证,或者如果不需要,请从项目 settings.py 中删除配置,如下所示。

    ```#'DEFAULT_PERMISSION_CLASSES': [
       # 'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly'
       #],```

阅读更多关于权限here

【讨论】:

    【解决方案2】:

    既然你是新手,我会推荐你​​使用Generic views,它会为你节省很多时间,让你的生活更轻松:

    class ProcessBillListCreateApiView(generics.ListCreateAPIView):
        model = ProcessBill
        queryset = ProcessBill.objects.all()
        serializer_class = ProcessBillSerializer
    
        def create(self, request, *args, **kwargs):
            bill_data = request.data
            print(bill_data)
            return bill_data
    

    我还建议通过DRF Tutorial 以不同的方式来实现您的端点和一些高级功能,如通用视图权限等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-24
      • 1970-01-01
      • 2015-04-17
      • 2016-08-01
      • 2013-01-15
      • 2015-04-28
      • 2013-12-27
      • 2017-02-03
      相关资源
      最近更新 更多