Лучший способ включить модуль "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?