我正在遵循Django教程,并停留在第二部分,我必须在其中创建一个管理员帐户。
到目前为止,我一直遵循教程中描述的所有内容,并收到以下错误:
D
我做的一个不同是,我将virtualenvs放在了一个不同于项目文件夹的文件夹中;这可能是个问题吗?我正确地指向了我项目中的venv文件夹。 这到底是什么错误?
答案 0 :(得分:2)
要在@Elnherjar的答案上添加更详细的答案,
settings.py
上的
AUTH_PASSWORD_VALIDATORS = [
{
'NAME': 'django.contrib.auth.password_validation.\
UserAttributeSimilarityValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.\
MinimumLengthValidator',
},
...
]
在这些字符串中附加一个制表符。
AUTH_PASSWORD_VALIDATORS = [
{
'NAME': 'django.contrib.auth.password_validation.' +
'UserAttributeSimilarityValidator',
},
...
]
答案 1 :(得分:1)
好的,经过一番挖掘,我发现解决方案非常简单。线
File "e:\venvs\django_tutorial_venv\lib\site-packages\django\contrib\auth\password_validation.py", line 29, in get_password_validators
raise ImproperlyConfigured(msg % validator['NAME'])
django.core.exceptions.ImproperlyConfigured: The module in NAME could not be imported: django.contrib.auth.password_validation. UserAttributeSimilarityValidator. Check your AUTH_PASSWORD_VALIDATORS setting.
是有问题的,特别是我符合pep8标准,并且错误地在UserAttributeSimilarityValidator
前面添加了空格,因此它读取了包含空格的完整字符串,这就是为什么找不到包的原因。我更正了字符串,而忽略了pep8,它起作用了。
答案 2 :(得分:0)
在进行追溯之后,您可能需要查看您的设置并查找AUTH_PASSWORD_VALIDATORS,可能存在一些语法错误
答案 3 :(得分:0)
设置中的以下代码行解决了该问题。
AUTH_PWD_MODULE="django.contrib.auth.password_validation."
AUTH_PASSWORD_VALIDATORS = [
{
"NAME": f"{AUTH_PWD_MODULE}UserAttributeSimilarityValidator",
},
{
"NAME": f"{AUTH_PWD_MODULE}MinimumLengthValidator",
},
{
"NAME": f"{AUTH_PWD_MODULE}CommonPasswordValidator",
},
{
"NAME": f"{AUTH_PWD_MODULE}NumericPasswordValidator",
},
]
我发现它更具可读性。实际的问题是使用\尝试格式化字符串时,名称已更改。