python - 创建 super 用户时 Django manage.pysync_db 崩溃

标签 python django pycharm

当我尝试使用 manage.py syncdb 为我的 Django 应用程序创建初始数据库时,它在我即将创建 super 用户时崩溃了,输入电子邮件地址后:

  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/getpass.py", line 114, in fallback_getpass
    stacklevel=2)
getpass.GetPassWarning: Can not control echo on the terminal.

我尝试解决这个问题:

  • syncdb 期间跳过 super 用户的创建并运行 createsupercommand。这似乎解决了问题,因为创建了一个 super 用户,但无法使用该用户 ID 和密码登录管理站点

  • 删除并重新创建数据库。

  • 仔细检查数据库中的用户配置文件:用户名、密码、is_staff、is_active 的值均正确。

  • 调试该过程,直到我真正看到正确的用户名和密码被传递到authenticate函数中。

  • 检查数据库编码设置为 UTF-8。

我使用 Django 1.6.5、Pycharm 和 MySQL。整个事情相当令人困惑,因为我的其他项目具有相同的设置工作完美。

关于可能导致这种情况的原因有什么想法吗?

编辑: 显然,在错误的 super 用户创建过程中,Django 以某种方式将密码标记为不可用(这是不可能检测到的,因为哈希值存储在数据库中并且人类无法解释)。我通过在 Django 环境之外创建密码哈希并将其粘贴到数据库中来设法规避此问题。至少它现在允许我登录。不过问题还没有解决...

最佳答案

在 Ubuntu 上,getpass 库可以执行此操作

# Bind the name getpass to the appropriate function
try:
    import termios
    # it's possible there is an incompatible termios from the
    # McMillan Installer, make sure we have a UNIX-compatible termios
    termios.tcgetattr, termios.tcsetattr
except (ImportError, AttributeError):
    try:
        import msvcrt
    except ImportError:
        try:
            from EasyDialogs import AskPassword
        except ImportError:
            getpass = fallback_getpass
        else:
            getpass = AskPassword
    else:
        getpass = win_getpass
else:
    getpass = unix_getpass

您的问题似乎是由以下事实引起的:getpass 库无法导入它想要用于以非回显方式读取用户输入的 3 个库之一。

我知道您使用的是 Mac,我不知道这是否会有所不同,但如果 getpass 与我的相同,您需要确保您拥有terminos安装了 msvcrtEasyDialogs

这个post on stackoverflow告诉您如何在 Mac 上安装软件包。

您基本上可以运行命令:easy_install pip,然后pip install terminos(如果这不起作用,请尝试安装 msvcrt 或 EasyDialogs)。

[编辑]msvcrt 库仅适用于 Windows,不用介意。

关于python - 创建 super 用户时 Django manage.pysync_db 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23850307/

相关文章:

python - Matplotlib path.contains_points 对某些边上的点返回 false 而对其他边不返回

python - Pandas 根据所有现有列的值(第一列除外)创建新列

Python 扩展(Boost.Python & Py++)和 dlopen 混淆

django - Django 的工作日

python - 如何向第三方模型注入(inject)多对多关系?

apache-spark - 如何可靠获取delta表的分区列

python - 使用大型矩阵时禁止在 Pycharm 输出中自动换行

python - 从 mongoDB 中提取信息

python - Django HTML5 样板页眉和页脚

python - Keras 新手 : how to load a pretrained MalConv model to predict in my data?