Django模板:如何判断一个变量是否存在于另一个变量中?
Django模板中判断字符串变量是否包含的正确写法
首先,你试的第一种写法{% if a in b %}其实是正确的语法,如果它没生效,大概率是你在视图传递变量或者模板引用变量时出了问题,而不是这个语法本身错了。
为什么你的其他写法无效?
{% if '{{a}}' in b %}:这里你把{{a}}当成了固定字符串内容,实际是在判断字符串"{{a}}"(而非变量a的真实值)是否在b里,自然匹配不上。{% if '{{a}}' in '{{b}}' %}:同理,两边都变成了固定字符串"{{a}}"和"{{b}}",完全和你的变量值无关,肯定不生效。
完整的正确示例
假设你在视图里传递了如下数据:
# views.py def demo_view(request): # 模拟for循环需要的列表数据 data_list = [ {"a": "abc", "b": "abcd"}, {"a": "def", "b": "xyzdef"}, {"a": "test", "b": "hello world"} ] return render(request, "demo.html", {"data_list": data_list})
对应的模板代码:
<!-- demo.html --> {% for item in data_list %} <div> 检查 '{{ item.a }}' 是否在 '{{ item.b }}' 中: {% if item.a in item.b %} <strong>✅ 存在</strong> {% else %} <strong>❌ 不存在</strong> {% endif %} </div> {% endfor %}
几点注意事项
- 在Django模板标签(比如
{% if %}、{% for %})内部引用变量时,直接写变量名即可,不需要用{{ }}包裹——{{ }}是用来把变量值输出到页面的语法,不是在标签内部调用变量的方式。 - 确认视图传递的
a和b都是字符串类型,如果是数字等其他类型,可能需要先转成字符串(比如在视图里处理str(a)),否则判断逻辑会不符合预期。
内容的提问来源于stack exchange,提问作者Sellkite Business
相关产品推荐
相关产品推荐

