Шаблоны Django: добавление разделов условно - PullRequest
0 голосов
/ 13 июля 2009

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

  1. имя, фамилия и аналогичные данные
  2. данные о текущих обработках
  3. .. и далее: конкретные данные о любом другом анализе (например, TAC, ЯМР, сердце, кровь, что угодно)

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

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

Просто из любопытства мне стало интересно, знает ли кто-нибудь альтернативную стратегию для такого типа паттернов, либо на уровне шаблона, либо на уровне представления.

Ответы [ 2 ]

2 голосов
/ 13 июля 2009

См. Этот пример: http://www.djangosnippets.org/snippets/1057/

По сути, вы можете просматривать поля модели в шаблоне.

Полагаю, вы просто хотите правильно отобразить данные, присутствующие во всех этих различных полях? Цикл каждого поля должен дать вам результаты, которые вы ищете.

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

1 голос
/ 13 июля 2009

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

В общем, это звучит как работа для тега шаблона. Я бы, вероятно, написал собственный тег, который бы брал ваш родительский объект в качестве параметра и проверял данные, чтобы определить, что выводить. Каждый выбор потенциально может быть представлен другим суб-шаблоном, вызываемым самим тегом.

...