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

ger*_*esc 33 python django django-admin python-3.x django-1.8

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

manage.py createsuperuser
Run Code Online (Sandbox Code Playgroud)

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

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

严重Django?真的吗?

我找到的唯一信息是上面列出的但是没有用: 由于在TTY中不工作,无法在django中创建超级用户

而这里的另一个,基本相同: 无法创建超级用户Django

Evg*_*kin 71

如果你跑

$ 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.
Git Bash并面对上面的错误消息尝试追加winptyie例如:

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

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

 MINGW64 ~$ cat ~/.profile
 alias python='winpty python'
Run Code Online (Sandbox Code Playgroud)

执行此操作后,要么源~/.profile文件,要么只是重新启动终端,初始命令python manage.py createsuperuser应该按预期工作!

  • 如果运行`winpty docker-compose run python manage.py createsuperuser`,这也适用于docker (2认同)
  • 您能解释一下“winpty”是什么以及它的作用吗? (2认同)

小智 9

试图用命令泊坞窗容器中创建超级用户,当我有同样的问题: sudo docker exec -i <container_name> sh。添加选项 -t 解决了问题:

sudo docker exec -it <container_name> sh


小智 9

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

winpty python manage.py createsuperuser.
Run Code Online (Sandbox Code Playgroud)


pym*_*men 8

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

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

    DJANGO_SUPERUSER_USERNAME=admin2 DJANGO_SUPERUSER_PASSWORD=psw \
    python manage.py createsuperuser --email=admin@admin.com --noinput
Run Code Online (Sandbox Code Playgroud)

方式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
Run Code Online (Sandbox Code Playgroud)

输出应该是Superuser created successfully.