【问题标题】:Not able to create super user with Django manage.py无法使用 Django manage.py 创建超级用户
【发布时间】:2015-12-08 13:43:18
【问题描述】:

尝试为我的数据库创建超级用户:

manage.py createsuperuser

得到一个悲伤的递归消息:

由于未在 TTY 中运行,已跳过创建超级用户。您可以在项目中运行manage.py createsuperuser 手动创建一个。

真的是 Django 吗?认真的吗?

我找到的唯一信息是上面列出的信息,但它不起作用: Unable to create superuser in django due to not working in TTY

这里还有一个,基本一样: Can't Create Super User Django

【问题讨论】:

  • 您使用的是虚拟环境吗?哪一种?您是从 virtualenv 中的命令行运行它,还是像在 IDE 中那样以其他方式运行它?
  • @YPCrumble 从 PyCharm 和普通终端运行,没有虚拟环境
  • 两者都出现同样的错误?
  • @YPCrumble 完全相同的消息
  • 对于 macOS 上的我,我需要启用运行配置选项“在输出控制台中模拟终端”。修复了 PyCharm 2019.1.3 中的问题。

标签: python django python-3.x django-admin django-1.8


【解决方案1】:

如果你运行

$ python manage.py createsuperuser
由于未在 TTY 中运行,因此跳过了超级用户创建。您可以在项目中运行 manage.py createsuperuser 手动创建一个。
Git Bash 并面对上述错误消息尝试附加 winpty 即例如:
$ winpty python manage.py createsuperuser
用户名(留空以使用“...”):

为了能够像往常一样在 Windows 上运行 python 命令以及我通常做的是将别名行附加到 ~/.profile 文件,即

 MINGW64 ~$ cat ~/.profile
 alias python='winpty python'

这样做之后,要么获取~/.profile 文件,要么只是重新启动终端,初始命令python manage.py createsuperuser 应该会按预期工作!

【讨论】:

  • 如果你运行winpty docker-compose run python manage.py createsuperuser,这也可以通过docker运行
  • 您能解释一下winpty 是什么以及做什么吗?
  • 当我尝试运行上面的命令时,它给出了“没有名为 'fcntl' 的模块”错误。但是 fcntl 不适用于 Windows。有什么建议吗?
【解决方案2】:

我在尝试使用以下命令在 docker 容器中创建超级用户时遇到了同样的问题: sudo docker exec -i <container_name> sh。添加选项 -t 解决了问题:

sudo docker exec -it <container_name> sh

【讨论】:

    【解决方案3】:

    在 virtualenv 中,为与 git-bash 相关的 Django 项目创建超级用户,请使用以下命令:

    winpty python manage.py createsuperuser.
    

    【讨论】:

      【解决方案4】:

      要创建管理员用户名和密码,必须先使用命令:

      python manage.py 迁移

      然后使用命令后:

      python manage.py createsuperuser

      完成这些步骤后,程序会要求您输入:

      • 用户名
      • 电子邮件
      • 密码

      使用密码时,它不会在您输入时显示,因此看起来好像您没有输入,但请忽略它,因为它会要求您租用密码。 完成这些步骤后,使用命令:

      python manage.py runserver

      在浏览器中添加“/admin”,这将带您进入管理站点,然后输入您的新用户名和密码。

      【讨论】:

        【解决方案5】:

        我尝试从 Stash [应用程序:iOS 上的 Pythonista] 创建超级用户

        [确保已经进行了迁移]

        $ django-admin createsuperuser
        

        【讨论】:

          【解决方案6】:

          检查您的 docker-compose.yml 文件并确保您的 django 应用程序在服务下由 web 标记。

          【讨论】:

            【解决方案7】:

            由于Django 3.0,您可以通过两种方式创建没有 TTY 的超级用户

            方式 1:在命令行中将值和机密作为 ENV 传递

                DJANGO_SUPERUSER_USERNAME=admin2 DJANGO_SUPERUSER_PASSWORD=psw \
                python manage.py createsuperuser --email=admin@admin.com --noinput
            

            方式2:设置DJANGO_SUPERUSER_PASSWORD为环境变量

            # .admin.env
            DJANGO_SUPERUSER_PASSWORD=psw
            
            # bash
            source '.admin.env' && python manage.py createsuperuser --username=admin --email=admin@admin.com --noinput
            

            输出应该是Superuser created successfully.

            【讨论】:

              【解决方案8】:

              我想出了如何做到这一点。我所做的是我去了 VIEWS.py。接下来,我导入了模块os。然后我创建了一个名为createSuperUser(request): 的函数。然后,我创建了一个名为admin 的变量并将其设置为等于os.system("python manage.py createsuperuser")。然后,返回admin。最后,我重新启动了 Django 站点,然后它会在终端中提示您。

              import os
              
              def createSuperUser(request):
                  admin = os.system("python manage.py createsuperuser")
                  return 
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2012-12-13
                • 2021-08-19
                • 1970-01-01
                • 2020-12-15
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2016-11-12
                相关资源
                最近更新 更多