由于不在 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 createsuperuser
command 创建超级用户:
【讨论】:
以上是关于由于不在 TTY 中工作,无法在 django 中创建超级用户的主要内容,如果未能解决你的问题,请参考以下文章
Django中的Send_mail,在shell中工作,在本地工作,不在视图中
Android Geolocation在模拟器中工作但不在手机中工作
Django Rest Framework - response.set_cookie() 不在浏览器中设置 cookie,但在邮递员和可浏览 api 中工作