AssertionError в файле django-allauth settings.py при запуске приложения Django

Я сталкиваюсь с ошибкой AssertionError в моем Django-приложении при попытке запустить сервер разработки. Ошибка возникает в пакете django-allauth, а именно в файле settings.py. Я уже пробовал переустанавливать django-allauth, проверять зависимости и пересматривать конфигурацию, но безуспешно.

Ошибка возникает, когда я пытаюсь сделать ACCOUNT_EMAIL_VERIFICATION = 'mandatory' вместо "none"

вот трассировка:

Traceback (most recent call last):
  File "C:\Users\User\AppData\Local\Programs\Python\Python38-32\lib\threading.py", line 932, in _bootstrap_inner
    self.run()
  File "C:\Users\User\AppData\Local\Programs\Python\Python38-32\lib\threading.py", line 870, in run
    self._target(*self._args, **self._kwargs)
  File "C:\Users\User\Desktop\Main_project\venv\lib\site-packages\django\utils\autoreload.py", line 64, in wrapper
    fn(*args, **kwargs)
  File "C:\Users\User\Desktop\Main_project\venv\lib\site-packages\django\core\management\commands\runserver.py", line 125, in inner_run
    autoreload.raise_last_exception()
  File "C:\Users\User\Desktop\Main_project\venv\lib\site-packages\django\utils\autoreload.py", line 87, in raise_last_exception
    raise _exception[1]
  File "C:\Users\User\Desktop\Main_project\venv\lib\site-packages\django\core\management\__init__.py", line 398, in execute
    autoreload.check_errors(django.setup)()
  File "C:\Users\User\Desktop\Main_project\venv\lib\site-packages\django\utils\autoreload.py", line 64, in wrapper
    fn(*args, **kwargs)
  File "C:\Users\User\Desktop\Main_project\venv\lib\site-packages\django\__init__.py", line 24, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "C:\Users\User\Desktop\Main_project\venv\lib\site-packages\django\apps\registry.py", line 116, in populate
    app_config.import_models()
  File "C:\Users\User\Desktop\Main_project\venv\lib\site-packages\django\apps\config.py", line 269, in import_models
    self.models_module = import_module(models_module_name)
  File "C:\Users\User\AppData\Local\Programs\Python\Python38-32\lib\importlib\__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "C:\Users\User\AppData\Local\Programs\Python\Python38-32\lib\importlib\__init__.py", line 127, in import_m
odule
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 783, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "C:\Users\User\Desktop\Main_project\venv\lib\site-packages\allauth\account\models.py", line 9, in <module>
    from . import app_settings, signals
  File "C:\Users\User\Desktop\Main_project\venv\lib\site-packages\allauth\account\app_settings.py", line 373, in <modu
le>
    app_settings = AppSettings("ACCOUNT_")
  File "C:\Users\User\Desktop\Main_project\venv\lib\site-packages\allauth\account\app_settings.py", line 27, in __init
__
    assert (
AssertionError

Мой вопрос: Как исправить эту ошибку, так как она появляется только тогда, когда ACCOUNT_EMAIL_VERIFICATION является обязательным, если его нет, то проект работает без проблем.

Ошибка, с которой вы столкнулись, - это AssertionError в пакете django-allauth, когда вы установили ACCOUNT_EMAIL_VERIFICATION в 'mandatory'. Эта ошибка возникает потому, что пакет django-allauth ожидает, что некоторые параметры будут настроены правильно.

Чтобы решить эту проблему, вы можете выполнить следующие действия:

  1. Убедитесь, что у вас установлена последняя версия django-allauth. Вы можете использовать следующую команду для обновления до последней версии:

    pip install --upgrade django-allauth
    
  2. Убедитесь, что вы включили 'allauth' и 'allauth.account' в список INSTALLED_APPS в файле settings.py вашего проекта:

    INSTALLED_APPS = [
        # other apps...
        'allauth',
        'allauth.account',
        # other apps...
    ]
    
  3. Дважды проверьте urls.py файл вашего проекта, чтобы убедиться, что вы включили необходимые URL для django-allauth:

    urlpatterns = [
        # other URL patterns...
        path('accounts/', include('allauth.urls')),
        # other URL patterns...
    ]
    
  4. Если у вас есть пользовательская модель пользователя, убедитесь, что она правильно настроена в settings.py файле вашего проекта. Вы можете указать пользовательскую модель пользователя с помощью настройки AUTH_USER_MODEL:

    AUTH_USER_MODEL = 'yourapp.YourCustomUserModel'
    
  5. Просмотрите другие настройки, связанные с проверкой электронной почты, в вашем settings.py файле. Убедитесь, что вы правильно настроили такие параметры, как EMAIL_BACKEND, ACCOUNT_EMAIL_REQUIRED и ACCOUNT_EMAIL_VERIFICATION.

    Вот пример конфигурации для проверки электронной почты:

    EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
    ACCOUNT_EMAIL_REQUIRED = True
    ACCOUNT_EMAIL_VERIFICATION = 'mandatory'
    

    Убедитесь, что у вас настроен действительный почтовый бэкенд, соответствующий вашему поставщику услуг электронной почты.

  6. Если проблема сохраняется, попробуйте удалить все скомпилированные файлы Python (.pyc или pycache) из каталога проекта, чтобы устранить возможные проблемы с кэшированием.

Я надеюсь, что это работа

Похоже, вы получаете ошибку утверждения, вызванную тем, что некоторые настройки содержат требования к другим настройкам, которые не выполняются.

ACCOUNT_EMAIL_VERIFICATION = 'mandatory' также требует ACCOUNT_EMAIL_REQUIRED = True.

Вы можете посмотреть документацию для опций конфигурации и их требований.

Глядя на вашу ошибку и исходный код django-allauth, кажется, что не выполнено следующее требование:

# If login is by email, email must be required
        assert (
            not self.AUTHENTICATION_METHOD == self.AuthenticationMethod.EMAIL
        ) or self.EMAIL_REQUIRED

Это еще больше указывает на то, что проблема в том, что ACCOUNT_EMAIL_REQUIRED не установлен параметр True.
Вы можете посмотреть это сообщение для примера правильной конфигурации для проверки электронной почты.

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