V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
elboble
V2EX  ›  Django

Django 模板中变量的嵌套

  •  
  •   elboble · 2023-09-12 21:11:14 +08:00 · 1792 次点击
    这是一个创建于 435 天前的主题,其中的信息可能已经有所发展或是发生改变。
    Django 用模板,遇到这么个需求,折腾了好久。

    后端返回的是形如
    {a_1:1,a_2:2,a_3:3.....}这样的对象。我要在模板中展示这些{{ a_1 }},{{ a_2 }}...

    自然而然想用循环,其实是个嵌套 {{ a_{{forloop_counter}} }},但是模板不支持。

    和 gpt 磋商半天,这样曲线实现了

    1.后端返回加一层壳:
    {data:{a_1:1,a_2:2,a_3:3.....}}

    2.你可以使用 with 标签创建一个中间变量 ,并在内部构建嵌套的变量名来访问对应的值:
    {% for num in "123" %}
    {% with var_name="total_"|add:num %}
    {{ var_name }}: {{ data|getvar:var_name }}
    {% endwith %}
    {% endfor %}

    3.自定义一个过滤器
    @register.filter
    def getvar(dictionary, key):
    return dictionary.get(key, '')

    有没有更 decent 的方法,难怪都去用 vue 了。
    izoabr
        1
    izoabr  
       2023-09-12 21:15:28 +08:00
    能 for data.values 么
    encro
        2
    encro  
       2023-09-12 21:21:49 +08:00
    直接在 view 搞,或者用拼接函数应该可以?
    这种问题直接 stackoverflow 或者 gptchat 分分钟。
    elboble
        4
    elboble  
    OP
       2023-09-12 22:15:34 +08:00
    还是要用好 prompt 啊,nested variables in Django template ?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4704 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 09:55 · PVG 17:55 · LAX 01:55 · JFK 04:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.