Где служебные функции должны жить в Django? Функции как пользовательское шифрование/дешифрование числа, отправление твитов, отправка электронного письма, проверка монопольного использования объекта, пользовательского контроля ввода, и т.д. Повторяющийся и пользовательский материал, который я использую во многих местах в моем приложении. Я определенно повреждаю DRY прямо сейчас.
Я видел некоторые демонстрации, где функции были определены в models.py, хотя это концептуально не казалось правильным мне. Они должны войти в приложение "утилит", которое импортируется в мой проект? Если так, где они входят в приложение утилит? models.py файл там?
Спасибо за то, что выручили этот n00b.
ОБНОВЛЕНИЕ: Позвольте мне быть еще более конкретным. Скажите, что мне нужна функция "light_encrypt (число)", которое берет параметрический усилитель "число", умножает ее на 7, добавляет 10 и возвращает результат и другую функцию "light_decrypt (encr_number), который берет параметрический усилитель "encr_number", вычитает 10, делится на 7 и возвращает результаты. Куда в моем дереве Django я поместил бы это? Это не промежуточное программное обеспечение, правильно? Как Felix предполагает, я создаю пакет Python и импортирую его в представление, где мне нужны эти функции?
Другой вопрос , но тот же ответ:
Мой обычный макет для сайта django:
projects / шаблоны / общий/ местный/
Где:
- projects содержат ваш основной проект, а любые другие
- common содержат вещи, которыми вы можете делиться на разных сайтах, или, по крайней мере, не относятся к конкретному проекту, например, если вам нужно загрузить django-profile и django-registration вместо того, чтобы иметь его непосредственно в python / site-packages.
- шаблоны содержат только то, что
- local содержит вещи, которые будут специфичными для текущей машины, так что вы можете правильно разделить данные, такие как местоположение базы данных и пароль - Затем я программно привязываю версии для конкретной машины (скажем, «machine1-localconfig.py») к local / localconfig.py, а затем могу «импортировать localconfig» в settings.py
- . Обычно я помещаю промежуточное ПО, зависящее от проекта, внутри файла проект и промежуточное ПО, не зависящее от проекта в common / middleware /
- , убедитесь, что вы добавили каталог шаблонов в нужное место в настройках (или, скорее всего, в localconfig.py, а затем импортируйте его в настройках), и убедитесь, что добавьте проекты, общие и локальные каталоги в свой PYTHONPATH.
Хорошо, после прочтения комментариев и ответа здесь я решил создать каталог под названием «common / util /» внутри каталога моего проекта. Внутри у меня есть файл «__ init__.py», в котором есть мои маленькие вспомогательные функции.
Думаю, если файл станет слишком большим, я разделю функции на отдельные общие файлы .py. Итак, теперь моя структура проекта выглядит так. Пожалуйста, исправьте, если я делаю неправильный выбор, я достаточно рано в разработке, и могу исправить это сейчас, хотя это еще легко сделать!
myproject/ (Django project)
common/
util/
__init__.py (helper functions)
middleware/ (custom middleware)
templates/ (project templates)
myapp/
fixtures/ (initial data to load)
migrations/ (south migrations)
urls/
views/
admin.py
forms.py
models.py
test.py
public/ (static stuff not served by Django)
media/
css/
img/
js/
lib/