在django模板变量中将数字连接为字符串

时间:2012-02-15 23:36:45

标签: django django-templates

我正在尝试连接两个数字作为参数传递给包含的模板。

特别是,在下面的代码中,我试图传递“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>

如何将这些数字连接成字符串?

文档中有警告说: 可以强制转换为整数的字符串将被求和,而不是连接,如上面的第一个示例所示。

所以我可以不这样做吗?似乎是否有警告,然后他们知道这是一个问题,那里应该有一个解决方案......

2 个答案:

答案 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)