这似乎应该很简单,但由于某种原因我无法解决这个问题。我正在使用 Django 1.4。我正在尝试进行基本检查,以查看在模板呈现期间列表QuerySet 是否为空,但我使用的 if 语句似乎总是评估为真。
我有一个 Django 模板,内容如下:
{% extends 'includes/base.html' %}
{% if object_list %}
...
{% block data %}
{% for object in object_list %}
...
{{ object.create_date }}
...
{% endfor %}
{% endblock data %}
...
{% endif %}
'base.html' 有块:
<body>
{% block content %}
...
<div class="row-fluid">
<div class="span12">
{% block data %}
<div align="center"><i>No data.</i></div>
{% endblock data %}
</div><!-- span12 -->
</div><!-- row -->
{% endblock content %}
...
</body>
生成 QuerySet 的视图函数在这里:
def barcode_track(request, model):
query = request.GET.get('barcode_search', '')
object_list = model.objects.all()
if query:
object_list = model.objects.filter(barcode__icontains=query)
return render_to_response('barcode_track/barcode_list.html',
{'object_list': object_list, 'query': query},
context_instance=RequestContext(request))
通过这种形式调用:
<form id="barcode_search_form" method="get" action="" class="form">
<input type="text" name="barcode_search" value="{{ query }}" />
<button type="submit" class="btn">Search</button>
</form>
和 urls.py 行:
urlpatterns = patterns('barcode_track.views',
url(r'^$', 'barcode_track', {'model': Barcode},
name="barcode_track"),)
这个想法是只有当结果存在于时才会显示结果object_list
,否则父块将保持不变。我尝试更改 的名称object_list
,并打印{{ dicts }}
到页面以确保它object_list
实际上是空的(它是)。我没有使用通用视图,尽管我意识到这个名字暗示了很多。实际上,我在使用类似逻辑编写的另一个应用程序中遇到了这个问题,所以我一定是在系统地错误地做某事。
我在这里想念什么?