Django не может зарегистрировать oauth2_provider и rest_framework в INSTALLED_APPS

Я работаю над этим проектом выходного дня, чтобы изучить Django, и я застрял.

До добавления фреймворка REST (предпоследняя фиксация в репозитории) все работало нормально.

Как только я добавил библиотеку djangorestframework, все рухнуло. Теперь, независимо от того, запускаете ли вы приложение на venv или на DOcker, вы получите один и тот же результат:

RuntimeError: Model class oauth2_provider.models.Application doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.

... или аналогичный, связанный с токеном rest_framework. Обе библиотеки установлены.

Я понимаю, проблема в том, что что-то не так с INSTALLED_APPS. Но... что?!

Документы заставляют меня думать, что я не делаю ничего плохого. Если вы посмотрите на импорт, то увидите, что from rest_framework etc etc и from oauth2_provider etc etc являются проблемой.

Журналы ошибок и трассировки стека совершенно бесполезны, в них нет полезной информации. Мы будем очень признательны за вашу помощь.

Похоже, что у вас отсутствует какая-либо конфигурация в вашем settings.py. Согласно документам, вам нужно указать платформе Django REST Framework использовать новый сервер аутентификации (т.е. oauth2_provider), но вы, похоже, используете токенную аутентификацию.

Для этого закомментируйте подтверждение подлинности токена и добавьте следующие строки в свой settings.py:

REST_FRAMEWORK = {     'DEFAULT_AUTHENTICATION_CLASSES': [         'oauth2_provider.contrib.rest_framework.OAuth2Authentication',     ], }

Судя по ошибке, вы, вероятно, пропустили какой-то шаг в одном из внешних руководств ссылки на ваш учебник:

Шаг 3: Настройте параметры

Обновить settings.py:

INSTALLED_APPS = [
    ...
    'rest_framework',
    'rest_framework.authtoken',
    'oauth2_provider',            # <-- This is what your error is about
    'social_auth',
    'accounts.apps.AccountsConfig',
]

Я исправил это, хотя логи ошибок не могли быть более обманчивыми.

  • удалено следующее из settings.py, которое я нашел здесь
import django
django.setup()
  • удалена папка "models" и переработана в соответствии с документами

  • создал `admin.py` для регистрации пользовательской модели пользователя (это я полностью пропустил до сих пор)

... и это все. И снова из-за отсутствия в Python логов ошибок и трассировки стека я потратил впустую несколько часов.

Вернуться на верх