我有一个Django项目,我想创建一个简单的python GUI,以允许用户随时随地更改主机地址和端口,而无需与命令提示符进行交互。我已经有一个简单的python用户界面,但是我将如何在python中进行编码,从而能够运行诸如python manage.py createsuperuser
之类的命令并填写所需信息,而无需在python脚本中运行该脚本只需调用常规的终端命令,例如:
subprocess.call(["python","manage.py", "createsuperuser"])
我不知道这是没有命令就可以做的事情,但是从那时起我可以将其实现到我的基本python GUI中,这将使用户能够createsuperuser
,{{1 }},runserver
,makemigrations
,甚至可以随时随地更改默认主机和端口。
答案 0 :(得分:3)
您可以从此代码使用并更改所需的每个命令,请注意,如果运行此命令,则外壳必须位于django项目文件夹中 如果需要,可以在django run命令之前使用“ CD”命令更改方向
from subprocess import Popen
from sys import stdout, stdin, stderr
Popen('python manage.py runserver', shell=True, stdin=stdin, stdout=stdout ,stderr=stderr)
您可以通过以下代码与Shell通信:
from subprocess import Popen, PIPE
from sys import stdout, stdin, stderr
process = Popen('python manage.py createsuperuser', shell=True, stdin=PIPE, stdout=PIPE ,stderr=stderr)
outs, errs = process.communicate(timeout=15)
print(outs)
username="username"
process.stdin.write(username.encode('ascii'))
process.stdin.close
不幸的是,对于createsuperuser,您会收到此错误:
由于未在TTY中运行,因此跳过了超级用户创建。您可以在项目中运行
manage.py createsuperuser
来手动创建一个项目
对于安全问题,您不能使用tty创建超级用户。
我更喜欢:
您可以在项目中使用此代码创建超级用户
from django.contrib.auth.models import User;
User.objects.create_superuser('admin', 'admin@example.com', 'pass')
如果您要使用Shell创建超级用户,建议您运行数据迁移stackoverflow.com/a/53555252/9533909