Как я могу вызвать приложение Django из другого приложения Python? - PullRequest
0 голосов
/ 23 апреля 2020

В стандартной настройке Django приложения вызываются сервером WSGI (например, gunicorn и mod_wsgi ) для ответа на HTTP-запросы, точка входа в пользовательский уровень - django Просмотр.
Можно ли сделать пользовательское соглашение о вызовах для вызова Django приложений (новая точка входа)? Если да, как правильно загрузить приложение Django?

Редактировать: Глядя на точку входа в файл wsgi.py , созданный командой startproject, я обратите внимание, что 1) он устанавливает переменную DJANGO_SETTINGS_MODULE и вызывает get_wsgi_application , которая 2) вызывает django .setup () и 3) возвращает приложение WSGI, которое будет вызываться сервером WSGI. 1 и 2 также происходит при выполнении команд администратора django. Достаточно ли сделать 1 и 2 и иметь правильно загруженное приложение Django? В 3 загружены промежуточные программы django, но они несовместимы, поскольку я не буду выполнять HTTP-вызовы (но приложение Django, конечно, будет отвечать на запросы HTTP, поступающие от других клиентов).

1 Ответ

0 голосов
/ 25 апреля 2020

Достаточно ли сделать 1 и 2 и правильно загрузить приложение Django?


Глядя на исходный код Django и это документация , я разобрался, как загрузить приложение Django. Взяв в качестве примера учебник по Django , я мог бы загрузить приложение опросов и вызвать его индексное представление следующим образом:

# Let Django knows where the project's settings is.
import os
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings')

from django.apps import apps
# Load the needed apps
apps.populate(installed_apps=['polls.apps.PollsConfig'])
# Make sure the above apps were loaded
apps.check_apps_ready()
apps.check_models_ready()

# Call it
from polls.views import index
# Here index view is decoupled from Django's HTTP interface, so in polls/views.py you have:
# def index():
#     return Question.objects.order_by('-pub_date')[:5]
print('index view: ' + str(index()))

Это не загрузить любое из промежуточных программ Django (они связаны с интерфейсом HTTP). Приложение polls не зависит от других установленных приложений, в противном случае все зависимости также должны быть загружены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...