我无法从 POSTMAN 进行 POST 调用,但可以手动进行 - Django
I can't make a POST call from POSTMAN but can do manually- Django
我可以从内置的 Django REST Framework API 进行 POST 调用,但是,Here you can see that result
我无法使用 POSTMAN
进行此类调用
还有 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 视图有 CSRF 保护。当您使用 postman 时,您需要 post CSRF header。您可以使用 postman 拦截器捕获那些 header,或者您可以使用 chrome 开发人员工具捕获那些 header。完成后,确保在 postman headers 选项卡
中有以下内容
Cookie: captured session cookie, others are not needed
X-CSRFToken: Captured token something like QRG6UOm1EsD6iGCk26ELms75ho392KZlxLZeS5aP4gFNrsdI4vRRIrklpraq
Referer: http://localhost:8080 (or your live server url)
你可以先退出,应该没问题。
或者您可以打开新的隐身模式 window,您将不会在其中登录。
我可以从内置的 Django REST Framework API 进行 POST 调用,但是,Here you can see that result
我无法使用 POSTMAN
还有 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 视图有 CSRF 保护。当您使用 postman 时,您需要 post CSRF header。您可以使用 postman 拦截器捕获那些 header,或者您可以使用 chrome 开发人员工具捕获那些 header。完成后,确保在 postman headers 选项卡
中有以下内容Cookie: captured session cookie, others are not needed
X-CSRFToken: Captured token something like QRG6UOm1EsD6iGCk26ELms75ho392KZlxLZeS5aP4gFNrsdI4vRRIrklpraq
Referer: http://localhost:8080 (or your live server url)
你可以先退出,应该没问题。 或者您可以打开新的隐身模式 window,您将不会在其中登录。