在Django教程中创建管理员时出错

时间:2018-11-29 20:23:42

标签: python django

我正在遵循Django教程,并停留在第二部分,我必须在其中创建一个管理员帐户。

到目前为止,我一直遵循教程中描述的所有内容,并收到以下错误:

D

我做的一个不同是,我将virtualenvs放在了一个不同于项目文件夹的文件夹中;这可能是个问题吗?我正确地指向了我项目中的venv文件夹。 这到底是什么错误?

4 个答案:

答案 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",
    },
]

我发现它更具可读性。实际的问题是使用\尝试格式化字符串时,名称已更改。