django模板过滤器
我有这种情况 {%if 1 | floatformat在'7,10%} 对 {%else%} 不 {%endif%} 返回结果总是设置为“是”,如何使结果返回“否” 请帮忙。django模板过滤器,django,templates,Django,Templates,我有这种情况 {%if 1 | floatformat在'7,10%} 对 {%else%} 不 {%endif%} 返回结果总是设置为“是”,如何使结果返回“否” 请帮忙。 谢谢1 | floatformat返回1,条件检查1是否在'7,10'中,因为django将'7,10'视为一个字符串,它返回True。尝试传递一个列表,它将返回no很难从您的示例中看出这里到底发生了什么,因为您正在用虚拟数据替换数据库中真正出来的数据 如您所写,结果将始终为“是”,因为字符串“7,10”包含字符串“1”
谢谢
1 | floatformat
返回1
,条件检查1
是否在'7,10'
中,因为django将'7,10'
视为一个字符串,它返回True。尝试传递一个列表,它将返回no很难从您的示例中看出这里到底发生了什么,因为您正在用虚拟数据替换数据库中真正出来的数据
如您所写,结果将始终为“是”,因为字符串“7,10”包含字符串“1”
听起来你想要达到的目标是:
如果此号码在此列表中,则为是,否则为否
因此,让我们重写此模板,使其更加真实:
{% if mynumber in yeslist %} yes {% else %} no {% endif %}
这假定:
- mynumber是一个数字
- yeslist是一个数字列表
8
是否在列表中将是不必要的困难。在您看来,这样做要容易得多:
def myview(request):
ctx = {}
# ... do some work ...
# yeslist now has a string like "7,10,123,93,9,19,83"
ctx['yeslist'] = yeslist.split(',')
# ... do more work, and render the response ...
现在,
{%if'8'在yeslist%}
将不再返回假阳性,因为它不是做子字符串匹配,而是做列表成员。很抱歉,我必须澄清,“7,10”是数据库查询的结果,它的值是7,10(带分隔逗号的数字),谢谢Idan Gazit,这正是我的意思。我会试试你对这件事的解决办法。谢谢。如果你觉得我的帖子对你有帮助,那么请投赞成票或接受它!