Невозможно запустить команду manage.py из app / views.py через подпроцесс - PullRequest
1 голос
/ 22 мая 2019

Python / Django новичок здесь!

В моем новом проекте я могу загружать страницы шаблона django и раздел администратора, а также обновлять и удалять объекты из админа ...Я смог собрать статистические данные без проблем, и я также могу запустить все команды с manage.py из bash, все изнутри virtualenv.

Когда я застрял, я пытаюсь запустить «проверку python manage.py» изview.py приложения через подпроцесс, например:

some_app / views.py

from django.shortcuts import render
from django.http import HttpResponse
import subprocess
import shlex

def home(request):
    cmd = 'python manage.py check'
    subprocess.Popen(shlex.split(cmd))
    return HttpResponse("<html><body>Hello World</body></html>")

HTML-код "Hello World" загружается нормально, команда подпроцесса приводит к ошибке Apache:

"python: can't open file 'manage.py': [Errno 2] No such file or directory".

"python: can't open file '../myweb/manage.py': [Errno 2] No such file or directory".

Я не уверен, что знаю, почему это так, у меня есть структура файла:

  • / var / www / project (venv)
    • bin /
    • include /
    • lib /
    • share /
    • myweb /
      • db.sqlite3
      • manage.py
      • myweb /
      • some_app /
        • views.py
        • ect ...
      • tatic /
      • шаблоны /

Если у enyone есть какие-либо советы, я буду признателен за это!

Информация о настройке:

  • Сервер Ubuntu 18.04
  • Apache 2.4.29
  • virtualenv с python 3.6.7
  • Django2.2.1

1 Ответ

0 голосов
/ 22 мая 2019

Вы должны указать правильный относительный путь

some_app /
views.py (ВЫ ЗДЕСЬ)
project_name /
manage.py (ВЫ ДОЛЖНЫ ЗДЕСЬ)

Так становится:

def home(request):
    cmd = 'python ../project_name/manage.py check'
    subprocess.Popen(shlex.split(cmd))
    return HttpResponse("<html><body>Hello World</body></html>")

Или просто:

Как писал Даниэль Роузман в своих комментариях

call_command('check')
...