【发布时间】:2016-07-28 02:54:54
【问题描述】:
我正在尝试实现一个显示最近创建的 5 个事件的功能。我决定用 Django 自定义模板标签来实现它(如果这不是最好的方法,请告诉我)。到目前为止我所拥有的是:
在 event_search.html 中(除其他外):
{% extends 'base.html' %}
{% load eventSearch_extras %}
<p>count: {{ recents.count }}</p>
<ul>
{% for e in recents %}
<li> {{e.title}} </li>
{% empty %}
<li> No recent events </li>
{% endfor %}
</ul>
在 eventSearch_extra.py 中:
from django import template
from eventSearch.models import Event
register = template.Library()
@register.inclusion_tag('eventSearch/event_search.html')
def mostrecentevents():
"""Returns most 5 most recent events"""
recents = Event.objects.order_by('-created_time')[:5]
return {'recents': recents}
我的问题是查询集“最近”似乎返回空模板。 'count:' 不显示任何内容,for 循环默认为 'No recent events'。
【问题讨论】:
-
这看起来是一种极其复杂的做事方式……你只是想在每个页面上显示这些“最近”吗?
-
不,只是搜索页面。最好的方法是什么?
-
只是将它们包含在搜索页面视图的上下文数据中?我不确定我是否在这里遗漏了什么..
标签: django django-models django-templates django-views