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 логов ошибок и трассировки стека я потратил впустую несколько часов.