如何使用python请求将POST请求发送到Django REST API

时间:2018-05-19 20:32:38

标签: python django post django-rest-framework python-requests

我有一个简单的休息api,我想发送一个使用请求的帖子请求。

我的网址格式是:

url(r'^$', views.ProductList.as_view())

在我看来,我有:

class ProductList(generics.ListAPIView):
    serializer_class = ProductSerializer

    def post(self, request, format=None):
        print('THIS IS A POST REQUEST')
        queryset = [product.name for product in Product.objects.all()]
        return Response(queryset)

我正在尝试使用以下方式发送帖子请求:

response = requests.post('http://127.0.0.1:8080/')

然而,这将返回403,并且不打印打印语句。我做了一些研究,我认为它可能与CSRF令牌没有关系,但我不确定如何添加它。有谁知道如何让邮件请求工作?

我使用的是python 3.6.3和Django 1.10

1 个答案:

答案 0 :(得分:1)

ListAPIView仅用于列出您的产品,因此禁止POST请求。

  

ListAPIView

     

用于表示模型实例集合的只读端点。

     

取自Django Rest Framework documentation

您应该使用ListCreateAPIView:

class ProductList(generics.ListCreateAPIView):
    """
    List all products or create a product.
    """
    queryset = Product.objects.all()
    serializer_class = ProductSerializer