【问题标题】:I can't make a POST call from POSTMAN but can do manually- Django我无法从 POSTMAN 拨打 POST 电话,但可以手动拨打 - Django
【发布时间】:2017-04-29 10:59:06
【问题描述】:

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

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

“CSRF 失败:CSRF 令牌丢失或不正确。”

我也以管理员身份登录,但在 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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    【解决方案2】:

    你可以先退出,应该没问题。 或者您可以打开新的隐身窗口,您将不会登录。

    【讨论】:

      猜你喜欢
      • 2014-06-25
      • 1970-01-01
      • 1970-01-01
      • 2017-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多