MiddlewareMixin 缺少必需参数:'get_response' django

BRI*_*ANE 0 python django python-3.x

有谁知道我为什么会收到此错误?我的程序之前可以运行,但我不知道我更改了什么导致它崩溃。

我的主网站可以工作,但每当我向http://10.0.0.233:8000/watcher/form/list发出此获取请求时,都会收到以下错误。我搜索了我的整个项目,没有发现 MiddlewareMixin 在任何地方使用。

网址.py:

from django.urls import path
from . import views

urlpatterns = [
    path('form/list',views.get_all_form_items),
]
Run Code Online (Sandbox Code Playgroud)

视图.py

from django.shortcuts import render
from rest_framework.decorators import api_view
from ast import literal_eval
from rest_framework.response import Response
import json

import sys
sys.path.append("...Utilities") 

from Utilities import string_math

from . models import form_item_db
from . serializers import form_item_db_serializer
@api_view(['GET'])
def get_all_form_items(request):
    snippets = form_item_db.objects.all()
    serializer = form_item_db_serializer(snippets, many=True)
        
    return Response(serializer.data)
Run Code Online (Sandbox Code Playgroud)

错误:

Django version 4.0, using settings 'backend.settings'
Starting development server at http://10.0.0.233:8000/
Quit the server with CTRL-BREAK.
[05/Jan/2022 02:11:55] "GET /watcher HTTP/1.1" 200 644
[05/Jan/2022 02:11:55] "GET /static/js/main.1924b030.js HTTP/1.1" 304 0
[05/Jan/2022 02:11:55] "GET /static/css/main.31d6cfe0.css HTTP/1.1" 304 0
Internal Server Error: /watcher/form/list
Traceback (most recent call last):
  File "C:\Users\bestg\AppData\Local\Programs\Python\Python310\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
    response = get_response(request)
  File "C:\Users\bestg\AppData\Local\Programs\Python\Python310\lib\site-packages\django\core\handlers\base.py", line 181, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "C:\Users\bestg\AppData\Local\Programs\Python\Python310\lib\site-packages\django\views\decorators\csrf.py", line 54, in wrapped_view
    return view_func(*args, **kwargs)
  File "C:\Users\bestg\AppData\Local\Programs\Python\Python310\lib\site-packages\django\views\generic\base.py", line 69, in view
    return self.dispatch(request, *args, **kwargs)
  File "C:\Users\bestg\AppData\Local\Programs\Python\Python310\lib\site-packages\rest_framework\views.py", line 505, in dispatch
    response = self.handle_exception(exc)
  File "C:\Users\bestg\AppData\Local\Programs\Python\Python310\lib\site-packages\rest_framework\views.py", line 465, in handle_exception
    self.raise_uncaught_exception(exc)
  File "C:\Users\bestg\AppData\Local\Programs\Python\Python310\lib\site-packages\rest_framework\views.py", line 476, in raise_uncaught_exception
    raise exc
  File "C:\Users\bestg\AppData\Local\Programs\Python\Python310\lib\site-packages\rest_framework\views.py", line 493, in dispatch
    self.initial(request, *args, **kwargs)
  File "C:\Users\bestg\AppData\Local\Programs\Python\Python310\lib\site-packages\rest_framework\views.py", line 410, in initial
    self.perform_authentication(request)
  File "C:\Users\bestg\AppData\Local\Programs\Python\Python310\lib\site-packages\rest_framework\views.py", line 324, in perform_authentication
    request.user
  File "C:\Users\bestg\AppData\Local\Programs\Python\Python310\lib\site-packages\rest_framework\request.py", line 220, in user
    self._authenticate()
  File "C:\Users\bestg\AppData\Local\Programs\Python\Python310\lib\site-packages\rest_framework\request.py", line 373, in _authenticate
    user_auth_tuple = authenticator.authenticate(self)
  File "C:\Users\bestg\AppData\Local\Programs\Python\Python310\lib\site-packages\rest_framework\authentication.py", line 126, in authenticate
    self.enforce_csrf(request)
  File "C:\Users\bestg\AppData\Local\Programs\Python\Python310\lib\site-packages\rest_framework\authentication.py", line 135, in enforce_csrf
    check = CSRFCheck()
TypeError: MiddlewareMixin.__init__() missing 1 required positional argument: 'get_response'
Run Code Online (Sandbox Code Playgroud)

Raz*_*ein 10

自 10.2020 起,github 上的 DRF 包中有一个修复: https: //github.com/encode/django-rest-framework/commit/7921e9af434f2ccfde6962cf8a1b76331cc77722#diff-25717930a68aebbdb51ee5f4060fb1e756d65ee4e8d96faf8 ad614ceced0db05

rest_framework/authentication.py 第 139 行附近

check = CSRFCheck()
Run Code Online (Sandbox Code Playgroud)

更改为

def dummy_get_response(request):  # pragma: no cover
    return None

check = CSRFCheck(dummy_get_response)

Run Code Online (Sandbox Code Playgroud)