Как вы отображаете только определенную переменную информацию в django-шаблоне? - PullRequest
0 голосов
/ 12 октября 2010

Например, если у меня есть следующие модели, представления и код в шаблоне ...

class news(models.Model):
    type = models.ForeignKey(----)  (charfield)
    title = models.CharField(max_length=100)
    published = models.DateTimeField(default=datetime.now)
    summary = models.CharField(max_length=200)

def ----():
    items = news.objects.all().order_by('-published')[:5]
    return {'items': items}

{% if items %}
<ul>
{% for item in items|slice:":2" %}
<li>{{ item.title }}</li>
<li>{{ item.summary }}</li>
{% endfor %}
<ul>
{% endif %}

Как бы вы относились к отображению элементов только определенного типа.используя приведенный выше шаблон кода.

например, отображать все элементы только type = Worldnews.

Я знаю, что это обычно достигается в представлениях, однако я хотел бы знать, как это достигается внутри шаблона.

Вся помощь очень ценится.

Ответы [ 3 ]

1 голос
/ 12 октября 2010

Попытка добиться этого в шаблоне - очень плохая идея.Это также невозможно.

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

РЕДАКТИРОВАТЬ: Это не совсем невозможно, но не совсем легко и не очень хорошая идея.Смотрите комментарии.

0 голосов
/ 13 октября 2010

Я что-то упустил, это кажется простым:

{% if items %}
<ul>
{% for item in items %}
    {% ifequal item.type "Worldnews" %}
        <li>{{ item.title }}</li>
        <li>{{ item.summary }}</li>
    {% endifequal %}
{% endfor %}
<ul>
{% endif %}

Как уже говорили другие, это гораздо лучше сделать в функции просмотра.

0 голосов
/ 12 октября 2010
news.objects.get(type__exact="Worldnews")

РЕДАКТИРОВАТЬ: Используйте выше для типа, который вам нужен для этого представления.

...