2010-12-16 2 views
1

Попытка выяснить, как это сделать. Я сделал проект Django, который очень хорошо сделан.Мнение: Где разместить этот код в приложении django:

Существует множество предварительно закодированных модулей, которые пользователь может включить в страницу (страница и модуль являются моделями в этом приложении), оставленные хорошо в администраторе (то есть: боковые ссылки, объявления, постоянный контакт).

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

код псевдо шаблона:

if page has modules: 
loop through modules: 
    write the pre coded content of module 

Поскольку ссылки должны быть в том же хорошо, как и модули, я создал «ссылка модуль-заполнитель» с пробкой из ссылок-заполнитель.

Новый псевдо-код является:

if page has modules: 
loop through modules: 
    if module.slug is "link-placeholder": 
    loop through page.links and output each 
    else: 
    write pre-coded module 

Мой вопрос, где лучшее место, чтобы написать этот вывод для ссылок? Как я понимаю, мои варианты:

  1. Построить из положить в шаблоне (легкий, но вид получает грязный - код хороший и аккуратный сейчас)
  2. Построить функцию в модели страницы, которая является вызывается, когда «ссылка заполнитель встречается) page.get_internal_link_ouutput. по сути, это будет запрашивать, создавать и печатать внутренний вывод модуля связи.
  3. Сделайте то же самое с пользовательскими шаблонами тегами.

Я склонялся к 2 или 3, но это не похоже на правильное место для этого. Думаю, я иногда получаю немного запутался в лучшем месте для размещения кода в приложениях django, хотя мне действительно нравится фреймворк.

Заранее благодарим за любые советы.

ответ

2

Я бы рекомендовал использовать специальный тег шаблона.

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