django повторно используемое приложение и структура проекта django - PullRequest
1 голос
/ 26 августа 2009

Мне интересно, если это хорошая практика. У меня обычно есть многократно используемые django-apps и python lib в каталоге "lib", и это хорошо работает. Затем у меня есть каталог «templates» непосредственно в корневом каталоге проекта, и я копирую шаблоны приложений по умолчанию из lib / django-app / templates в каталог «templates» моего проекта и изменяю изменения макета.

Теперь иногда мне нужно изменить / изменить поведение многократно используемых приложений для рассматриваемого сайта, поэтому я хотел бы создать «новое приложение» в моем проекте и изменять его по мере необходимости. Таким образом, я могу красиво обновить приложение, которое можно использовать повторно.

Это путь? есть ли лучшие способы?

Спасибо.

1 Ответ

3 голосов
/ 26 августа 2009

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

Лучший способ сделать это - изменить части, которые не соответствуют вашим потребностям, переопределив их, но оставив приложение без изменений. Давайте возьмем пример приложения комментариев Django от contrib. Если у вас нет всех необходимых полей в модели комментариев, вы должны изменить ее, создав пользовательскую модель для комментариев, которая наследует оригинал, и таким образом добавить необходимые функции. Из документации:

from django.contrib.comments.models import Comment

class CommentWithTitle(Comment):
    title = models.CharField(max_length=300)

Теперь я изменил приложение комментариев, и я также могу обновить источник приложения комментариев, не беспокоясь о конфликтах. Вам не нужно добавлять что-то, чтобы использовать это, оно работает так же хорошо, когда что-то избавляется или что-то меняет.

С представлениями и шаблонами, это немного плохая практика для непосредственного изменения предоставленных приложением шаблонов. Я предпочитаю делать это, фактически имея аргумент ключевого слова к представлению, определяющему шаблон. Если я хочу заменить шаблон по умолчанию своим собственным, я могу просто указать новый из конфигурации URL. Теперь мне не нужно прикасаться к представлению для изменения шаблона, и в конфигурации url ясно сказано, что я использую свой собственный вместо используемого по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...