我正在尝试连接两个数字作为参数传递给包含的模板。
特别是,在下面的代码中,我试图传递“divnum”
的内容我看了看: How can I concatenate forloop.counter to a string in my django template
并认为下面的代码可行,但它仍然添加相同的数字! (例如,我得到“2”,我想要“11”)
<div id="{{ forloop.counter }}graph" style="display:none; padding: 1em, 0;margin: 1em, 0;">
{% with x=forloop.counter|stringformat:"s" %}
{% include 'graph-div.html' with divnum="1"|stringformat:"s"|add:x width="50%" question=response.question title="Nationwide" %}
{% endwith %}
</div>
如何将这些数字连接成字符串?
文档中有警告说: 可以强制转换为整数的字符串将被求和,而不是连接,如上面的第一个示例所示。
所以我可以不这样做吗?似乎是否有警告,然后他们知道这是一个问题,那里应该有一个解决方案......
答案 0 :(得分:0)
遵循Django的模型 - 视图 - 模板(MVT)范例,为要显示的用户界面设置数据层的逻辑应该在视图层中。我知道这本身并不是业务逻辑,但它似乎在视图中处理得更好。根据经验,除了基于显示的基本决策之外,我确保我的模板旁边没有逻辑。由于您是“......从数据创建图表对象”,因此您还应该在视图中创建/组装数据对象时生成唯一ID。模板标记也可以帮助您解决问题,但我仍然建议将其放在视图中。在将其交给模板之前,请在视图中完成所有数据。
答案 1 :(得分:0)
在concatenate
<appname>\templatetags\<appname>_extras.py
模板过滤器
from django import template
register = template.Library()
@register.filter
def concatenate(arg1, arg2):
"""concatenate arg1 & arg2"""
return str(arg1) + str(arg2)