假设我有以下词典列表:
fruits = [
{"Name": "Apple", "id": 1, "url": "/apple", "Desc": "Red or green skin with white flesh."},
{"Name": "Pear", "id": 2, "url": "/pear", "Desc": "Green fruit with white flesh."},
{"Name": "Coconut", "id": 3, "url": "/coco", "Desc": "Brown hairy shell with with flesh."}
]
并通过视图传递给Django模板的上下文。我将如何构建一个看起来像这样的上下文表?
<小时/> A 的
我在考虑做这样的事情:
{% for fruit in fruits %}
<B>{{ fruit.Name|first_letter_upper }}</B><BR>
<A HREF="{{ fruit.url }}">{{ fruit.Name }}</A><BR>
{{ fruit.Desc }}<BR>
{% if not forloop.last %}<BR>{% endif %}
{% endfor %}
但是我必须实现自定义过滤器“first_letter_upper”。没什么大不了的,但我只是想知道是否有一种更简单的方法可以做到这一点,而不必使用自定义过滤器?
答案 0 :(得分:1)
您可以通过合并slice
和upper
来获得大写的第一个字母。
如果您只想让该字母出现一次,如果您有多个带有该字母的项目(例如Apple和Avocado),那么您可以使用ifchanged
。
{% for fruit in fruits %}
{% ifchanged %}<B>{{ fruit.Name|slice:":1"|upper }}</B><BR>{% endifchanged %}
<A HREF="{{ fruit.url }}">{{ fruit.Name }}</A><BR>
{{ fruit.Desc }}<BR>
{% if not forloop.last %}<BR>{% endif %}
{% endfor %}
答案 1 :(得分:0)
您可以使用内置的capfirst
:
{{ fruit.Name|capfirst }}