由于不在 TTY 中工作,无法在 django 中创建超级用户

Posted

技术标签:

【中文标题】由于不在 TTY 中工作,无法在 django 中创建超级用户【英文标题】:Unable to create superuser in django due to not working in TTY 【发布时间】:2015-01-14 19:07:03 【问题描述】:

我浏览了 djangoproject.com 的第一个 django 教程,在第 2 部分的开头,当我运行 "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.    

在运行syncdb 后继续创建超级用户时,我收到相同的消息。

我正在开发适用于 Windows 7 的 Eclipse,以及 Django 1.7.1 和 Python 2.7.8。

【问题讨论】:

python manage.py createsuperuser 是如何运行的?它是以某种方式从 Eclipse 运行还是通过 Windows 命令行运行? 来自 Django 项目的 eclipse 自定义命令工具。 我们可以尝试从 windows 命令行而不是 eclipse 自定义命令工具运行“python manage.py createsuperuser”吗? 哇,我觉得自己像个白痴一样不尝试这个。工作就像一个魅力,谢谢凯文。 没问题!很高兴帮助:) 【参考方案1】:

使用 Git Bash 并纠正上述错误消息时,请尝试附加 winpty 例如:

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

【讨论】:

wintpy 是做什么的? @LoukasPap winpty 是一个 Windows 软件包,提供类似于 Unix pty-master 的接口,用于与 Windows 控制台程序通信【参考方案2】:

如果你在 virtualenv 中,cd 进入你的 virtualenv 并激活它。然后尝试以下步骤:

python manage.py syncdb --noinput
python manage.py migrate
python manage.py createsuperuser

【讨论】:

我从 windows 命令行安装了 django,没有使用 virtualenv 或任何其他安装管理程序。有没有办法在不安装更多东西的情况下解决我的问题?此外,如果我现在得到它们会有帮助吗? @PJM 你运行这 3 个命令了吗?你不需要安装 aynthing 来让它工作 是的,我做了,仍然是同样的信息。 使用命令行工具代替eclipse中的自定义命令【参考方案3】:

您可以使用 django shell (python manage.py shell) 创建超级用户

from django.contrib.auth.models import User
User.objects.create_superuser(username='YourUsername', password='hunter2', email='your@email.com')

【讨论】:

这很有帮助,但它与后果而不是理由作斗争。【参考方案4】:

使用“Windows PowerShell”或“Windows Cmd”,然后使用相同的命令。 Git 命令接口有一定的限制。

【讨论】:

【参考方案5】:

我是 Windows10 用户。我尝试使用Git Bash 控制台运行py manage.py createsuperuser 命令,但出现错误。然后我将Git Bash 切换到具有管理员权限 的本机Windows Command Line,然后重新运行命令 - 它正在工作。

【讨论】:

【参考方案6】:

第一次运行

$ django-admin startproject mysite 在 cmd 提示符下,然后通过

应用迁移

cd 我的网站 我的网站:

python manage.py makemigrations 那么

python manage.py 迁移 之后

python manage.py createsuperuser

【讨论】:

【参考方案7】:

来自Django 3.0,您无需 TTY 也可以这样做

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

另外,您可以将 DJANGO_SUPERUSER_PASSWORD 设置为环境变量

【讨论】:

【参考方案8】:

如果您是使用 GitBash 终端的 Windows 用户并尝试为管理员创建超级用户,它将无法正常工作,而不是在管理权限中使用命令提示符它可以工作

Gitbash 终端错误

$ 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.

使用命令提示符解决错误

python manage.py createsuperuser
Username (leave blank to use 'user'): admin
Email address:
Password:
Password (again):
The password is too similar to the username.
This password is too short. It must contain at least 8 characters.
Bypass password validation and create user anyway? [y/N]: y
Superuser created successfully.

这可能对其他人有帮助。如果它适合你,请为此投票

【讨论】:

【参考方案9】:

使用这个命令:

python3 manage.py makemigrations

python3 manage.py migrate

python3 manage.py createsuperuser

python manage.py runserver

你的错误可能是:

[Error `You have 14 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, content types, sessions.
Run 'python manage.py migrate' to apply them.

Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/django/db/backends/utils.py", line 85, in _execute
    return self.cursor.execute(sql, params)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/django/db/backends/sqlite3/base.py", line 303, in execute
    return Database.Cursor.execute(self, query, params)`][1]

使用 Tree 命令检查你的目录:tree

然后运行 ​​Make migration : enter image description here

然后使用python3 manage.py createsuperusercommand 创建超级用户:

【讨论】:

以上是关于由于不在 TTY 中工作,无法在 django 中创建超级用户的主要内容,如果未能解决你的问题,请参考以下文章

Django中的Send_mail,在shell中工作,在本地工作,不在视图中

Android Geolocation在模拟器中工作但不在手机中工作

Django Rest Framework - response.set_cookie() 不在浏览器中设置 cookie,但在邮递员和可浏览 api 中工作

让请求在 curl 中工作,但不在 Python 中

Maven 全新安装在 intellij 中工作,但不在终端中

navigator.geolocation.getCurrentPosition 不在 chrome 中工作