У объекта Django 'CSRFCheck' нет атрибута 'process_request' - PullRequest
0 голосов
/ 09 февраля 2019

Все было в порядке, пока вдруг я не получил вышеуказанную ошибку при реализации DjangoObjectPermissions в моих API.

До этого Это работало нормально, даже в моей производственной среде все работает нормально.Я вижу эту ошибку только в моей локальной среде.

в соответствии с этим ответом, ошибка исчезнет, ​​но мне нужно знать, почему?

Пожалуйста, дайте мне знать, какую информацию я должен добавить к этому сообщению.

Ниже приведены установленные пакеты.

Django==1.10
django-allauth==0.29.0
django-angular==0.8.3
django-debug-toolbar==1.6
django-debug-toolbar-request-history==0.0.3
django-debug-toolbar-template-profiler==1.0.1
django-debug-toolbar-template-timings==0.7
djangorestframework==3.5.3

1 Ответ

0 голосов
/ 23 июня 2019

Добавить оператор try / исключением для empce_csrf ()

Обратите внимание, что эта ошибка происходит из rest_framework / authentication.py, внутри класса SessionAuthentication, метода forcece_csrf ().Метод empce_csrf () инициирует переменную check = CSRFCheck (), а в следующей строке указывается «check.process_request (request).

Если вы используете IDE, вы быстро заметите, что CSRFCheck () этого не делаетэтот атрибут / метод, таким образом, является ошибкой. Многие разработчики быстро скажут вам перейти на django> = 1.11.6, но вы обязательно столкнетесь с той же ошибкой. В этом отношении я использую django 1.11.6 и rest_framework 3.9.1.

Так что попробуйте это средство, у меня это сработало. Используйте инструкцию try / исключением. Перейдите в rest_framework / authentication.py, ниже, check = CSRFCheck (), добавьте это ...

def enforce_csrf(self, request):
   ...
   try:
       check.process_request(request)
   except:
       pass

То, что в строках написано так: после объявления переменной «check» вызовите (попробуйте) этот метод «process_request ()» и, если он не работает (за исключением), просто передайте.: Во-первых, вы в буквальном смысле оставляете совместимым исходный код rest_framework (учитывая, что обновление до более поздних версий django «может» решить эту проблему), а во-вторых, вы получаете рабочий код (хорошо !!, особенно если работаетг Agile)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...