Лучший способ включить модуль "utils" в проект django?

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

|-my_state_project
|---my_state_project
|---new_jersey
|---alabama
|---rhode_island

Я хочу создать модуль utils, из которого каждый app может импортироваться. Файл utils.py внутри модуля utils будет содержать функции, используемые для соскабливания данных из Интернета с помощью bs4. Каждый app будет иметь jobs.py скрипт для импорта из utils.py. Таким образом, проект будет выглядеть следующим образом:

|-my_state_project
|---my_state_project
|---new_jersey
|------jobs.py
|---alabama
|------jobs.py
|---rhode_island
|---utils
|------utils.py

Мои вопросы следующие:

  1. Так ли обычно структурируются проекты Django?
  2. Я получаю ModuleNotFoundError: No module named 'utils.py' при попытке импорта внутри одного из jobs.py файлов. Я импортирую его с помощью from utils import utils. Почему это вызывает недовольство? Это должно быть элементарно
  3. .

Альтернативой было бы создание utils.py файла внутри каждого приложения, что не кажется очень питоничным (особенно учитывая, что utils.py файл может расти и обновление каждого файла по отдельности было бы пыткой :)

Простым решением здесь является

from utils.utils import function_name, function_name2

so from appname.filename import function_name

На первый вопрос у меня нет твердого ответа, но я делал похожие вещи: поместил utils.py внутрь app.

Структура:

|- my_project
|--- my_project
|--- home
|----- models.py
|----- forms.py
|----- views.py
|----- utils.py
|----- urls.py
|----- templatetags
|--- rest_of_my_project

Мое приложение home служит только 3 целям:

  1. пользовательская модель пользователя,
  2. пользовательский администратор сайта, и
  3. функции, пользовательские View, пользовательские FormSet и т.д. внутри utils.py, а также пользовательские теги шаблонов.

Я не думаю, что в вашей структуре есть что-то неправильное.

Для второго вопроса, забыли ли вы включить 'utils' в INSTALLED_APPS в settings.py?

Вернуться на верх