gpt4 book ai didi

python - 如何将 forloop.counter 连接到我的 django 模板中的字符串

转载 作者:IT老高 更新时间:2023-10-28 20:57:23 25 4
gpt4 key购买 nike

我已经在尝试像这样连接:

{% for choice in choice_dict %}
{% if choice =='2' %}
{% with "mod"|add:forloop.counter|add:".html" as template %}
{% include template %}
{% endwith %}
{% endif %}
{% endfor %}

但由于某种原因,我只得到“mod.html”而不是 forloop.counter 编号。有谁知道发生了什么以及我能做些什么来解决这个问题?非常感谢!

最佳答案

您的问题是 forloop.counter 是一个整数,并且您使用的是 add 模板过滤器,如果您将所有字符串或所有整数传递给它,它会正常运行,但不是混合。

解决此问题的一种方法是:

{% for x in some_list %}
{% with y=forloop.counter|stringformat:"s" %}
{% with template="mod"|add:y|add:".html" %}
<p>{{ template }}</p>
{% endwith %}
{% endwith %}
{% endfor %}

导致:

<p>mod1.html</p>
<p>mod2.html</p>
<p>mod3.html</p>
<p>mod4.html</p>
<p>mod5.html</p>
<p>mod6.html</p>
...

第二个 with 标签是必需的,因为 stringformat 标签是用自动添加的 % 实现的。要解决此问题,您可以创建自定义过滤器。我使用类似的东西:

http://djangosnippets.org/snippets/393/

将截图保存为 some_app/templatetags/some_name.py

from django import template

register = template.Library()

def format(value, arg):
"""
Alters default filter "stringformat" to not add the % at the front,
so the variable can be placed anywhere in the string.
"""
try:
if value:
return (unicode(arg)) % value
else:
return u''
except (ValueError, TypeError):
return u''
register.filter('format', format)

在模板中:

{% load some_name.py %}

{% for x in some_list %}
{% with template=forloop.counter|format:"mod%s.html" %}
<p>{{ template }}</p>
{% endwith %}
{% endfor %}

关于python - 如何将 forloop.counter 连接到我的 django 模板中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5725794/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com