Правильное место для размещения файла расширения уценки в проекте Django? - PullRequest
2 голосов
/ 24 января 2010

Я создал файл расширения уценки (называемый mdx_xxx.py) для проекта django, над которым я работаю, но не могу решить, где его разместить.

В документации сказано, что файл должен находиться на PYTHONPATH, и я видел несколько постов в блоге, предлагающих просто поместить файл в корневой каталог проекта.

Тем не менее, это кажется мне странным местом, так как я бы предпочел увидеть его в каталоге соответствующего приложения, но тогда его больше нет на PYTHONPATH.

Может ли какой-нибудь опытный программист django пролить свет на эту проблему?

Спасибо

Ответы [ 3 ]

1 голос
/ 24 января 2010

Требование к файлам расширений жить непосредственно по пути Python, а не внутри какого-либо пакета, является (IMO) неудачным ограничением реализации уценки Python.

Если ваше расширение очень специфично для вашего проекта, я думаю, что размещение его в корне проекта - лучший доступный вариант.

С другой стороны, если ваше расширение можно использовать повторно в других случаях, я бы упаковал его с помощью простого setup.py и установил его в virtualenv с помощью pip, как я делаю со всеми моими другими зависимостями.

1 голос
/ 24 января 2010

Не все должно быть в вашем проекте. Это требование, зависимость. Вы все еще можете упаковать их вместе, и я думаю, вам нужно будет поместить это на верхний уровень. В основном это означает, что импортируемые из того же места, что и сам проект. Лично я все подталкиваю к virtualenv, так что это красиво и чисто. Если вы делаете то же самое, процесс развертывания должен включать безопасное размещение вашего проекта и любых зависимостей в этом virtualenv. В противном случае, в любое место на пути.

0 голосов
/ 19 августа 2013

Если вы используете стандартную библиотеку уценок из pip (pip install markdown) сейчас в версии 2.3.1, расширение может быть где угодно. Вам просто нужно указать пунктирный путь к нему. Старый стиль - его наличие непосредственно в PYTHONPATH в модуле с префиксом mdx_ все еще работает.

У меня есть это в коде моего приложения: django_file_downloads.mdx_download.

Чтобы использовать его из шаблонов django:

{% load markup %}
{{ variable|markdown:'django_file_downloads.mdx_download' }}
...