【django-allauth ver0.56】“NameError: name ‘allauth’ is not defined”之解决方法

首先

在开发带有用户身份验证的Web应用时在Django中发生的错误。

为了添加用户认证功能,我们需要安装django-allauth,并将其添加到settings.py的INSTALLED_APPS中,如下所示。

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'allauth', #この行を追加
    'app', #アプリ名(今回は関係なし)
]

在执行了一系列的操作之后,我尝试使用python manage.py runserver启动本地服务器,但是出现了以下错误。

allauth.account.middleware.AccountMiddleware的名称错误: ‘allauth’未定义

看起来allauth没有定义。
虽然已经添加到INSTALLED_APPS中,但为什么没有定义?

运动环境

操作系统 (Caozuo xi tong)

・Windows 10专业版

模块

・Django 4.1.1
・django-allauth 0.56.1

– Django 4.1.1
– django-allauth 0.56.1

原因与解决方法

根据往常一样,请教GPT先生,并提出错误报告,据说这次的错误是由于中间件配置不足造成的。

ChatGPT: https://chat.openai.com/

ChatGPT:https://chat.openai.com/

要让其正常运行,需要在settings.py的MIDDLEWARE中添加以下代码。

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.56.0版本开始需要进行记录。再次改变版本时需要注意…

参考网站:django-allauth官方文档

最后

在进行更新前,模块会自我警醒并检查官方文档。
当在GitHub等平台公开源代码时,请务必在requirements.txt中使用~=等符号来明确版本说明。

广告
将在 10 秒后关闭
bannerAds