Ссылка на несколько проектов Django из одного монорепо - PullRequest
0 голосов
/ 09 октября 2019

Я хочу иметь возможность писать общие функции, к которым можно обращаться в одноразовых пакетных сценариях, а также с помощью запущенной службы Django (для использования ORM)

В настоящее время у меня есть это в _init__. py под модулем my_proj.

if 'DJANGO_SETTINGS_MODULE' not in os.environ:
    os.environ['DJANGO_SETTINGS_MODULE'] = 'my_proj.blah.blah.settings'
    import django
    django.setup()

Это прекрасно работает для одного проекта django. Однако теперь я хочу сослаться на функции ORM из другого проекта django, "other_proj" в том же репо из независимого сценария, который находится за пределами обоих проектов django .

Есть ли способ "django.setup ()" сразу для нескольких проектов?

Или, по крайней мере, способ легко переключаться между двумя проектами?

Или вообще есть лучший способ? (Я понимаю, что мог бы создать клиентскую библиотеку для работы со службами во время их работы, но предпочел бы устранить эти издержки)

Ответы [ 2 ]

1 голос
/ 09 октября 2019

Если вы хотите, чтобы проект Django имел доступ к функциональности, находящейся в другом проекте Django, вам подойдет клиентская библиотека (как вы заметили). Вы также можете рассмотреть возможность упаковки этих наборов функций для повторного использования приложений Django , которые вы импортируете в каждый проект, или вы можете абстрагировать их далее в повторно используемые модули Python, которые импортируются в каждый проект. Если вы надеетесь использовать Django ORM из одного проекта для доступа к данным из другого проекта, то вы, возможно, ищете этот вопрос SO: Как сделать так, чтобы два проекта django совместно использовали одну базу данных

Я думаю, что с более конкретными деталями в вашем вопросе (например, например, с функцией X в проекте A, которую вы хотели бы вызвать из проекта B), мы могли бы быть более конкретными с руководством.

0 голосов
/ 09 октября 2019

Я не уверен, что полностью понимаю, что вы пытаетесь реализовать здесь;две вещи, которые могут звучать примерно так, как вы просите:

1) Запуск проектов Django в uWSGI в режиме Emperor позволяет обслуживать несколько проектов Django с одного сервераодновременно.

2) Django можно настроить для запуска одного и того же проекта одновременно на нескольких доменах, используя Sites Framework .

Я согласен, однако, что более подробно о том, чтоу вас есть, и то, что вы пытаетесь достичь, вероятно, необходимо дать удовлетворительный ответ.

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