Лучший способ включить модуль "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
Мои вопросы следующие:
- Так ли обычно структурируются проекты Django?
- Я получаю
ModuleNotFoundError: No module named 'utils.py'
при попытке импорта внутри одного изjobs.py
файлов. Я импортирую его с помощьюfrom utils import utils
. Почему это вызывает недовольство? Это должно быть элементарно .
Альтернативой было бы создание 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 целям:
- пользовательская модель пользователя,
- пользовательский администратор сайта, и
- функции, пользовательские
View
, пользовательскиеFormSet
и т.д. внутриutils.py
, а также пользовательские теги шаблонов.
Я не думаю, что в вашей структуре есть что-то неправильное.
Для второго вопроса, забыли ли вы включить 'utils' в INSTALLED_APPS
в settings.py
?