无法使用 Django 创建超级用户 manage.py

Not able to create super user with Django manage.py

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

manage.py createsuperuser

收到一条悲伤的递归消息:

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

说真的 Django?认真的吗?

我为此找到的唯一信息是上面列出的信息,但没有用: Unable to create superuser in django due to not working in TTY

和这里的另一个基本相同: Can't Create Super User Django

如果您从 Git Bash 运行

$ python manage.py createsuperuser
Superuser creation skipped due to not running in a TTY. You can run manage.py createsuperuser in your project to create one manually.
并遇到上述错误消息,请尝试附加 winpty 例如:

$ winpty python manage.py createsuperuser
Username (leave blank to use '...'):

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

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

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

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

sudo docker exec -it <container_name> sh

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

python manage.py 迁移

然后使用命令后:

python manage.py 创建超级用户

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

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

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

python manage.py runserver

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

我知道怎么做了。我所做的是我去了 VIEWS.py。接下来,我导入了模块 os。然后我创建了一个名为 createSuperUser(request): 的函数。然后,我创建了一个名为 admin 的变量并将其设置为等于 os.system("python manage.py createsuperuser")。然后在那之后,returnadmin。最后,我重新启动了 Django 站点,然后它会在终端提示你。

import os

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

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

winpty python manage.py createsuperuser.

我尝试从 Stash 创建超级用户 [App: Pythonista on iOS]

[确保迁移已经完成]

$ django-admin createsuperuser

检查你的 docker-compose.yml 文件并确保你的 django 应用程序被标记为 web服务。

因为 Django 3.0 你可以通过两种方式创建一个没有 TTY 的超级用户

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

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

方式二: 设置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.