这可能很简单,但我四处寻找却找不到答案。从Django模板中引用列表中的单个项目的最佳方式是什么?换句话说,如何在模板语言中执行与{{ data[0] }}等效的操作?
{{ data[0] }}
rhfm7lfc1#
它看起来像{{ data.0 }}。请参阅变量和查找。
{{ data.0 }}
5f0d552i2#
更好的方法:自定义模板筛选器:https://docs.djangoproject.com/en/dev/howto/custom-template-tags/例如在模板中获取my_list[x]:在模板中
{% load index %} {{ my_list|index:x }}
模板标签/index.py
from django import template register = template.Library() @register.filter def index(indexable, i): return indexable[i]
如果是my_list = [['a','b','c'], ['d','e','f']],则可以使用模板中{{ my_list|index:x|index:y }}来获得my_list[x][y]和“for”搭配很好
my_list = [['a','b','c'], ['d','e','f']]
{{ my_list|index:x|index:y }}
my_list[x][y]
{{ my_list|index:forloop.counter0 }}
经过测试,运行良好^_^
nfzehxib3#
{{ data.0 }}应该可以工作。假设你写了data.obj,django尝试data.obj和data.obj(),如果它们不起作用,它尝试data["obj"],在你的例子中,data[0]可以写为{{ data.0 }},但是我建议你把data[0]拉到视图中,并作为单独的变量发送。
data.obj
data.obj()
data["obj"]
data[0]
lx0bsm1f4#
@jennifer06262016,你完全可以添加另一个过滤器来返回djangoQueryset中的对象。
@register.filter def get_item(Queryset): return Queryset.your_item_key
在这种情况下,您可以键入类似于{{ Queryset|索引:x|get_item }}到你的模板中去访问一些字典对象。
sqyvllje5#
首先确保将包含自定义标记功能的应用程序添加到INSTALLED APP中,请按照以下说明操作
1在主目录应用程序中创建另一个目录,名称为templatags,与model.pyviews.py、urls.py处于同一级别。2在templatags目录内创建init.py和另一个具有自定义标记名称的文件,例如:我的标签
MainApp/ __init__.py models.py templatetags/ __init__.py my_tags.py views.py
在模板中,您将使用以下内容:
{% load my_tags.py %}
在my_tags.py中:
from django import template register = template.Library() @register.filter(name="get") def get(indexable, i): return indexable[i]
在www.example.com中views.py:
number = [0,1,2,3,4,5] return render( "index.html", {"number":number}
)在index.html中:
{% load my_tags %} {{numer|get:forloop.counter0}}
参考How to create custom template tags and filters
5条答案
按热度按时间rhfm7lfc1#
它看起来像
{{ data.0 }}
。请参阅变量和查找。5f0d552i2#
更好的方法:自定义模板筛选器:https://docs.djangoproject.com/en/dev/howto/custom-template-tags/
例如在模板中获取my_list[x]:
在模板中
模板标签/index.py
如果是
my_list = [['a','b','c'], ['d','e','f']]
,则可以使用模板中{{ my_list|index:x|index:y }}
来获得my_list[x][y]
和“for”搭配很好
经过测试,运行良好^_^
nfzehxib3#
{{ data.0 }}
应该可以工作。假设你写了
data.obj
,django尝试data.obj
和data.obj()
,如果它们不起作用,它尝试data["obj"]
,在你的例子中,data[0]
可以写为{{ data.0 }}
,但是我建议你把data[0]
拉到视图中,并作为单独的变量发送。lx0bsm1f4#
@jennifer06262016,你完全可以添加另一个过滤器来返回djangoQueryset中的对象。
在这种情况下,您可以键入类似于{{ Queryset|索引:x|get_item }}到你的模板中去访问一些字典对象。
sqyvllje5#
首先确保将包含自定义标记功能的应用程序添加到INSTALLED APP中,请按照以下说明操作
1在主目录应用程序中创建另一个目录,名称为templatags,与model.pyviews.py、urls.py处于同一级别。
2在templatags目录内创建init.py和另一个具有自定义标记名称的文件,例如:我的标签
在模板中,您将使用以下内容:
在my_tags.py中:
在www.example.com中views.py:
)
在index.html中:
参考How to create custom template tags and filters