【发布时间】:2013-07-24 02:54:50
【问题描述】:
我需要创建一个自定义标签,返回一个列表,然后我可以使用 {% for item in custom_tag_returning_list %} 遍历。
现在我使用 assign_tag 方法进行了以下破解,但怀疑它是否正确:
from django import template
from product.models import Product
register = template.Library()
@register.assignment_tag
def all_products():
return Product.objects.all().order_by('name')
在模板中我不能直接使用all_products,但需要先分配给一些变量:
{% all_products as all_products_list %}
{% if all_products_list %}
{% for product in all_products_list %}
...
{% endfor %}
{% endif %}
是否需要对临时变量进行赋值?不能直接和其他一些标签助手一起使用吗?
【问题讨论】:
-
为什么不能在视图的上下文中发送这个?
-
您认为这有什么问题?这正是分配标签的用途。根本不是黑客。
-
您可以使用常规标签和
{% empty %}标签来做到这一点,但正如丹尼尔所说,这对我来说看起来不错。 -
@karthikr 可能可以,但是否有一些可用于所有模板的基本/一般视图?抱歉,我是 Django 的新手。
-
@DanielRoseman 只是询问是否需要分配一些不需要的变量,感觉像是一种解决方法。