django-templates template教程 - 我如何使用Django模板检查集合的大小?




template大于 2.0教程 (5)

我在我的Django模板中有一个列表。 我只想在列表大小大于零的情况下执行某些操作。 我怎样才能检查这个?

我已经试过myList | length和myList | length_is但是没有成功。 我搜遍了所有,并没有看到任何例子。


Answers

如果你尝试了myList | length和myList | length_is并且它没有得到想要的结果,那么你应该使用myList.count


如果您使用的是最新的Django,则更改列表9530引入了一个{%empty%}块,允许您编写

{% for athlete in athlete_list %}
  ...
{% empty %}
  No athletes
{% endfor %}

当你想要做的事情涉及迭代非空列表时很有用。



如果列表中没有元素,则该列表被认为是False ,因此您可以这样做:

{% if mylist %}
    <p>I have a list!</p>
{% else %}
    <p>I don't have a list!</p>
{% endif %}

如果您使用django的内置通用视图或在render_to_response快捷方式函数中传递上下文实例关键字参数,Django可以访问模板的某些常用设置常量,例如settings.MEDIA_URL和一些语言设置。 以下是每种情况的示例:

from django.shortcuts import render_to_response
from django.template import RequestContext
from django.views.generic.simple import direct_to_template

def my_generic_view(request, template='my_template.html'):
    return direct_to_template(request, template)

def more_custom_view(request, template='my_template.html'):
    return render_to_response(template, {}, context_instance=RequestContext(request))

这些视图都会有几个经常使用的设置,例如settings.MEDIA_URL可以作为{{ MEDIA_URL }}等模板使用。

如果你正在寻找访问设置中的其他常量,那么简单地解压你想要的常量,并将它们添加到你在视图函数中使用的上下文字典中,如下所示:

from django.conf import settings
from django.shortcuts import render_to_response

def my_view_function(request, template='my_template.html'):
    context = {'favorite_color': settings.FAVORITE_COLOR}
    return render_to_response(template, context)

现在,您可以在模板上以{{ favorite_color }}访问settings.FAVORITE_COLOR





django django-templates