Визуализировать внешне определенный блок в шаблоне Django - PullRequest
1 голос
/ 11 ноября 2010

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

Поскольку блоки сообщений блога на двух страницах будут выглядеть одинаково, за исключением показанного числа, я хотел бы поместить соответствующий HTML вотдельный шаблон, который я могу включить или связать с фактическим отображаемым шаблоном.Я просмотрел документацию, и тег include выглядел многообещающе, но, по-видимому, он визуализируется вне текущего контекста, что бесполезно для моей цели, так как он не будет проходить через объекты.Помимо этого, я не вижу другого способа сделать то, что я хочу.Это возможно, или мне просто не повезло, и мне придется нарушать СУХОЙ?Код ниже, чтобы дать вам представление о том, что я хочу.

Спасибо

#######################
# news/frontpage.html #
#######################
{% extends "news/base.html" %}

{% block site_title %} - Front Page{% endblock %}

{% block center_col %}
{{ block.super }}
     <a href="/news/">View Older Blog Posts</a>
{% endblock %}

{% block blog_rows %}
{% for object in object_list %}
     # Blog post content would go here, however it is to be included.
{% endfor %}
{% endblock %}

Ответы [ 3 ]

2 голосов
/ 11 ноября 2010

Вы ищете тег включения .

0 голосов
/ 11 ноября 2010

Игнасио прав, что вам нужен тег включения, но вы должны знать, что тег include не отображает вне текущего контекста - он совершенно определенно использует тот же контекст, что и блок, в котором он находится.

Ваша проблема, вероятно, в том, что вы пытаетесь вызвать blogpost_set для object_list - но связь не со списком объектов, а с каждым отдельным объектом в списке. Вам нужно будет пройти через object_list, а затем через blogpost_set.all для каждого из них.

0 голосов
/ 11 ноября 2010

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

{% for object in blogposts %}
# ...
{% endfor %}

Вы определяете посты в своем представлении, которые включают 5 или 100 сообщений.

...