Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Can';t使用Django rest框架提交post请求(“详细信息”:“CSRF失败:CSRF令牌丢失或不正确”)_Python_Django_Django Rest Framework_Django Rest Viewsets_Django Rest Framework Jwt - Fatal编程技术网

Python Can';t使用Django rest框架提交post请求(“详细信息”:“CSRF失败:CSRF令牌丢失或不正确”)

Python Can';t使用Django rest框架提交post请求(“详细信息”:“CSRF失败:CSRF令牌丢失或不正确”),python,django,django-rest-framework,django-rest-viewsets,django-rest-framework-jwt,Python,Django,Django Rest Framework,Django Rest Viewsets,Django Rest Framework Jwt,我进入了一个奇怪的情况,我登录到网站并尝试提交表格,如果我使用权限\u类=[AllowAny]或未验证类,我得到错误CSRF失败:CSRF令牌丢失或不正确 在下面的场景中,它会弹出一个输入密码和用户名的窗口。我的全班同学都是这样 class AddReview(APIView): serializer_class = ReviewSerializer authentication_classes = (BasicAuthentication,) def post(self

我进入了一个奇怪的情况,我登录到网站并尝试提交表格,如果我使用
权限\u类=[AllowAny]
或未验证类,我得到错误
CSRF失败:CSRF令牌丢失或不正确

在下面的场景中,它会弹出一个输入密码和用户名的窗口。我的全班同学都是这样

class AddReview(APIView):
    serializer_class = ReviewSerializer
    authentication_classes = (BasicAuthentication,)
    def post(self, request):  
        rest = request.POST.get('restaurant')
        dish = request.POST.get('dish')
我的设置.py

REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.IsAuthenticated',
    ),
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
        'rest_framework.authentication.SessionAuthentication',
        'rest_framework.authentication.BasicAuthentication',

    ),
}
我只想提交一个post自定义表单来提交数据。任何有助于解决问题的建议都会受到极大的欢迎

更新

我可以用这个提交表格

class SessionAuthentication(SessionAuthentication):
    def enforce_csrf(self, request):
        return

但我为什么要强制执行呢?我做错了什么?

理想情况下,您的网站表单应该有一个csrf令牌,并且还应该发送到服务器。可能是这样的:

<form method="post">{% csrf_token %}</form>
{%csrf\u令牌%}
  • 默认情况下,CSRF中间件在
    中间件
    设置中激活
  • 如果要禁用CSRF保护,只需使用几个视图即可使用
    CSRF\u export()
    decorator

  • 参考资料


    理想情况下,您的网站表单应该有一个csrf令牌,并且还应该发送到服务器。可能是这样的:

    <form method="post">{% csrf_token %}</form>
    
    {%csrf\u令牌%}
    
  • 默认情况下,CSRF中间件在
    中间件
    设置中激活
  • 如果要禁用CSRF保护,只需使用几个视图即可使用
    CSRF\u export()
    decorator

  • 参考资料


    一切都和你提到的一样。我已经包括了代币。当我提交表单时,如果我没有在post函数之前包含“authentication\u classes=(BasicAuthentication,)”我会得到一个匿名用户。在这种情况下,我会在chrome中得到一个验证弹出窗口。响应代码和标题是什么?从视图中删除了身份验证类,然后我得到这个=>>HTTP 403禁止允许:POST,选项内容类型:application/json VARIVE:Accept{“detail”:“CSRF失败:CSRF令牌丢失或不正确。”}如果我添加身份验证类=(基本身份验证,)它在Popup中询问用户名和密码我认为基本身份验证是针对API的,因为web页面会话应该可以工作-或者您需要在这方面进行更多探索一切都和您提到的一样。我已经包括了代币。当我提交表单时,如果我没有在post函数之前包含“authentication\u classes=(BasicAuthentication,)”我会得到一个匿名用户。在这种情况下,我会在chrome中得到一个验证弹出窗口。响应代码和标题是什么?从视图中删除了身份验证类,然后我得到这个=>>HTTP 403禁止允许:POST,选项内容类型:application/json VARIVE:Accept{“detail”:“CSRF失败:CSRF令牌丢失或不正确。”}如果我添加身份验证类=(基本身份验证,)它在弹出窗口中询问用户名和密码。我认为基本身份验证是针对API的,因为web页面会话应该可以工作——或者您需要对此进行更多探索使用“django cors Header”并进行检查。谷歌它,它很容易使用“django cors头”,并检查它。谷歌它,很简单