python - 我无法从 POSTMAN 进行 POST 调用,但可以手动进行 - Django

标签 python django post django-rest-framework postman

我可以从 Django REST Framework 内置 API 进行 POST 调用,但是 Here you can see that result 我无法使用 POSTMAN postman result 进行此类调用

还有 POSTMAN 的标签内扩展,它的显示

"CSRF Failed: CSRF token missing or incorrect."

我也以管理员身份登录,但它在 POSTMAN 中不起作用 你能告诉我出了什么问题吗

下面是代码

serializers.py

from rest_framework import serializers
from snippets.models import Snippet
from django.contrib.auth.models import *

class SnippetSerializer(serializers.HyperlinkedModelSerializer):
            class Meta:
                model = Snippet
                fields = ('title','code',)

def create(self, validated_data):
    return Snippet.objects.create(**validated_data)


def update(self, instance, validated_data):
    instance.title = validated_data.get('title', instance.title)
    instance.code = validated_data.get('code', instance.code)
    instance.save()
    return instance

Views.py

from django.shortcuts import render
from django.http import HttpResponse
from django.views.decorators.csrf import csrf_exempt
from rest_framework.renderers import JSONRenderer
from rest_framework.parsers import JSONParser
from snippets.models import Snippet
from rest_framework import viewsets
from snippets.serializers import SnippetSerializer


# Create your views here.
class SnippetViewSet(viewsets.ModelViewSet):
    """
    API endpoint that allows users to be viewed or edited.
    """
    queryset = Snippet.objects.all().order_by('title')
    serializer_class = SnippetSerializer

最佳答案

那是因为你的 django View 有 CSRF 保护。使用postman时需要发布CSRF header。您可以使用 postman 拦截器捕获这些 header ,也可以使用 chrome 开发人员工具捕获这些 header 。完成后,确保 postman 标题选项卡中有以下内容

Cookie:  captured session cookie, others are not needed
X-CSRFToken: Captured token something like QRG6UOm1EsD6iGCk26ELms75ho392KZlxLZeS5aP4gFNrsdI4vRRIrklpraq
Referer: http://localhost:8080 (or your live server url)

关于python - 我无法从 POSTMAN 进行 POST 调用,但可以手动进行 - Django,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41137086/

相关文章:

Java:从 HTTP 服务器上的套接字读取 POST 数据

python - VS Code python 调试器只能工作一次。

python - 基于匹配的 Python 中的第一列合并数据

在 supervisord 中设置环境变量时出现 Python 键错误

mysql - 无法在 Windows 上安装 python mysqlclient

ajax - 打开页面后如何使用 urllib2 或 Mechanize 发送 Ajax post 请求?

python - 字符串转 Json Python

Python:将目录结构树表示为列表的列表

Django 管理站点反向外键内联

jquery - 无法使用 jquery 将参数从 body 传递到 webapi post 方法