我知道有关于Django Rest Framework的答案,但我无法找到解决问题的方法.
我有一个具有身份验证和一些功能的应用程序.我添加了一个新的应用程序,它使用Django Rest Framework.我想只在这个应用程序中使用该库.我也想发出POST请求,我总是收到这个回复:
{
"detail": "CSRF Failed: CSRF token missing or incorrect."
}
Run Code Online (Sandbox Code Playgroud)
我有以下代码:
# urls.py
from django.conf.urls import patterns, url
urlpatterns = patterns(
'api.views',
url(r'^object/$', views.Object.as_view()),
)
# views.py
from rest_framework.views import APIView
from rest_framework.response import Response
from django.views.decorators.csrf import csrf_exempt
class Object(APIView):
@csrf_exempt
def post(self, request, format=None):
return Response({'received data': request.data})
Run Code Online (Sandbox Code Playgroud)
我想添加API而不影响当前的应用程序.所以我的问题是如何才能为此应用禁用CSRF?
我有一个后端 API,它位于 django 中并部署在 Google Endpoint 上。我有一个将数据插入数据库的发布请求。
我创建了一个脚本来使用此端点,但出现此错误:
{“detail”:“CSRF 失败:Referer 检查失败 - 无 Referer。”}
关于 over posts,我将 crsf_exempt 装饰器添加到我的类中,但它没有改变。
我尝试通过两种方式添加装饰器:
class AddUser(APIView):
""" Create user and company from csv """
@method_decorator(csrf_exempt)
def post(self, request):
@method_decorator(csrf_exempt, name='dispatch')
class AddUser(APIView):
""" Create user and company from csv """
def post(self, request):
Run Code Online (Sandbox Code Playgroud)
但两者都失败了。
这是我联系端点的方式:
resp = requests.request(
method, url,
headers={'Authorization': 'Bearer {}'.format(
open_id_connect_token)}, **kwargs)
Run Code Online (Sandbox Code Playgroud)
有任何想法吗 ?谢谢
编辑
因此,我尝试将身份验证类添加到我的视图中,但这似乎是一个坏主意。这对我来说真是麻烦。
我尝试让 csrftoken 这样做:
client = requests.session()
# Retrieve the CSRF token first
client.get(url) # sets …Run Code Online (Sandbox Code Playgroud)