V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
elboble
V2EX  ›  Django

Django 模板中变量的嵌套

  •  
  •   elboble · 228 days ago · 907 views
    This topic created in 228 days ago, the information mentioned may be changed or developed.
    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  
       228 days ago
    能 for data.values 么
    encro
        2
    encro  
       228 days ago
    直接在 view 搞,或者用拼接函数应该可以?
    这种问题直接 stackoverflow 或者 gptchat 分分钟。
    elboble
        4
    elboble  
    OP
       228 days ago
    还是要用好 prompt 啊,nested variables in Django template ?
    About   ·   Help   ·   Blog   ·   API   ·   FAQ   ·   Mission   ·   Tools   ·   885 Online   Highest 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 20:36 · PVG 04:36 · LAX 13:36 · JFK 16:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.