Как мне создать графический интерфейс для запуска проекта Django? - PullRequest
1 голос
/ 10 мая 2019

У меня есть проект Django, и я хотел бы создать простой графический интерфейс Python, позволяющий пользователям изменять адрес хоста и порт на ходу без необходимости взаимодействия с командной строкой.У меня уже есть простой пользовательский интерфейс на Python, но как мне написать код на Python, который мог бы выполнить команду, такую ​​как python manage.py createsuperuser, и заполнить необходимую информацию без необходимости запускать ее в скрипте Python, который просто вызываетобычные терминальные команды, такие как:

subprocess.call(["python","manage.py", "createsuperuser"])

Я не знаю, можно ли обойтись без команд, но было бы удивительно, если бы с тех пор я мог просто реализовать это в своем основном графическом интерфейсе Python, который быразрешить пользователям createsuperuser, runserver, makemigrations, migrate и даже изменять хост и порт по умолчанию на ходу.

1 Ответ

3 голосов
/ 10 мая 2019

вы можете использовать из этого кода и изменять каждую нужную вам команду. Обратите внимание: если вы запускаете эту команду, ваша оболочка должна находиться в папке проекта django, если вы хотите, вы можете изменить направление с помощью команды "CD" перед командой запуска django

from subprocess import Popen

from sys import stdout, stdin, stderr

Popen('python manage.py runserver', shell=True, stdin=stdin, stdout=stdout ,stderr=stderr)

вы можете общаться с оболочкой по этому коду:

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

К сожалению, для createuperuser вы получаете эту ошибку:

Создание суперпользователя пропущено из-за неработает в TTY.Вы можете запустить manage.py createsuperuser в своем проекте, чтобы создать его вручную

Вы не можете создать суперпользователя с tty для проблем безопасности.

Я предпочитаю:

вы можете использовать этот код в своем проекте для создания суперпользователя

from django.contrib.auth.models import User; 
User.objects.create_superuser('admin', 'admin@example.com', 'pass')

, если вы хотите создать суперпользователя с оболочкой, я бы предложил запустить Data Migration stackoverflow.com / a/ 53555252/9533909

...