【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中使用~=等符号来明确版本说明。