Django Allauth - ModuleNotFoundError: No module named 'allauth.account.middleware' 即使已正确安装django-allauth

7 浏览
0 Comments

Django Allauth - ModuleNotFoundError: No module named 'allauth.account.middleware' 即使已正确安装django-allauth

"ModuleNotFoundError: 找不到名为'allauth.account.middleware'的模块"

即使django-allauth已经全部安装和设置好了,我在我的django项目中一直得到这个错误??

我甚至尝试重新安装和更改我的python到python3,但没有改变任何东西,无法弄清楚为什么所有其他导入都有效,但是MIDDLEWARE不行...

求助?

settings.py:

"""
youtube2blog2项目的Django设置。
使用Django 4.2.4通过'django-admin startproject'生成。
有关此文件的更多信息,请参见:
有关设置及其值的完整列表,请参见
"""
from pathlib import Path
import django
import os
import logging
import pyfiglet
import allauth
# 将项目内的路径构建为:BASE_DIR / 'subdir'的形式。
BASE_DIR = Path(__file__).resolve().parent.parent
# 快速启动开发设置-不适用于生产
# 安全警告:保持生产中使用的密钥保密!
SECRET_KEY = 'omegalul'
# 安全警告:在生产中不要打开调试!
DEBUG = True
ALLOWED_HOSTS = []
# CUSTOM CODE
# os.environ['FFMPEG_PATH'] = '/third-party/ffmpeg.exe'
# os.environ['FFPROBE_PATH'] = '/third-party/ffplay.exe'
OFFLINE_VERSION = False
def offline_version_setup(databases):
    if (OFFLINE_VERSION):
        # 写入代码以替换离线设置的数据库字典数据
        return True
    return
banner_ascii_art = pyfiglet.figlet_format("CHRIST IS KING ENTERPRISES")
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
print("\n - 当前Django版本:" + str(django.get_version()))
print("\n - settings.py:当前日志记录器级别为" + str(logger.getEffectiveLevel()))
logger.debug('settings.py:日志记录器正在工作。\n\n')
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
AUTHENTICATION_BACKENDS = [
    # 不管`allauth`如何,都需要通过用户名在Django管理员中登录
    'django.contrib.auth.backends.ModelBackend',
    # `allauth`特定的身份验证方法,例如通过电子邮件登录
    'allauth.account.auth_backends.AuthenticationBackend',
]
'''
社交认证所需的设置
需要开发者凭据
在MVP完成之前暂停
# 特定提供商的设置
SOCIALACCOUNT_PROVIDERS = {
    'google': {
        # 对于每个基于OAuth的提供商,要么添加一个包含所需客户端凭证的`SocialApp`(`socialaccount`应用),要么在此处列出它们:
        'APP': {
            'client_id': '123',
            'secret': '456',
            'key': ''
        }
    }
    'apple': {
    }
    'discord' {
    }
}
'''
LOGIN_REDIRECT_URL = 'dashboard'
#
# Application definition
INSTALLED_APPS = [
    # 我的应用程序
    'yt2b2',
    'home',
    'dashboard',
    # Django应用程序
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # 下载的应用程序
    'rest_framework',
    'embed_video',
    'allauth',
    'allauth.account',
    'allauth.socialaccount',
    #'allauth.socialaccount.providers.google',
    #'allauth.socialaccount.providers.apple',
    #'allauth.socialaccount.providers.discord',
]
MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    # 下载的中间件
    'allauth.account.middleware.AccountMiddleware',
]
ROOT_URLCONF = 'youtube2blog2.urls'
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]
WSGI_APPLICATION = 'youtube2blog2.wsgi.application'
# Database
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3', # <--------- OFFLINE VERSION
        # 考虑使用.env文件掩盖这些秘密变量,以增强Django应用程序的安全性。此外,Vercel允许您在部署期间列出环境变量。
        #'URL' : 'postgresql://postgres:oibkk5LL9sI5dz[email protected]:5968/railway',
        #'NAME' : 'railway',
        #'USER' : 'postgres',
        #'PASSWORD' : 'oibkk5LL9sI5dzY5PAnj',
        #'HOST' : 'containers-us-west-128.railway.app',
        #'PORT' : '5968'
    }
}
# Password validation
AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]
# Internationalization
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_TZ = True
# Static files (CSS, JavaScript, Images)
STATIC_URL = '/static/' # url中的路径
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static"),
]
# 默认主键字段类型
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'

尝试更改为python3,通过pip重新安装django-allauth,尝试其他stackoverflow的解决方案,浏览allauth文档... 现在都没有起作用

更新:由于垃圾邮件过滤器的原因,删除了https链接

错误位置:

MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
# 下载的中间件
'allauth.account.middleware.AccountMiddleware',
]

0