【问题标题】:Building a dynamic tree with session information in Django (template question)在 Django 中使用会话信息构建动态树(模板问题)
【发布时间】:2011-03-21 21:33:06
【问题描述】:

所以我有一个展开/折叠树,我在会话数据中跟踪它。

我希望能够根据会话数据在 Django 中呈现树。

我正在用类似的东西保存状态:

request.session['treedata'][item_id] = state # (0 or 1)

在我的渲染模板中,我正在循环遍历项目,并为每个项目设置对象的可见性,例如:

{% for item in itemlist %} 
<div {% if request.session.treedata.<whatgoeshere?> %}style="display:none"{% endif %}>
Content of the subtree
</div>
{% endfor %}

所以这就是我感到困惑的地方。

我可以指定:

request.session.treedata.(item.id)

request.session.treedata.(forloop.counter)

或者我是否必须将项目和状态预处理到新的上下文变量中?

谢谢!

詹姆斯

【问题讨论】:

    标签: django templates iterator traversal


    【解决方案1】:

    假设item是一个模型,item_iditem.id,你应该可以这样做:

    {% for item in itemlist %} 
      <div {% if request.session.treedata.item.id %}style="display:none"{% endif %}>
        Content of the subtree
      </div>
    {% endfor %}
    

    您可以在此处阅读有关 Django 模板如何查看变量的信息:

    http://docs.djangoproject.com/en/1.2/topics/templates/#variables

    【讨论】:

    • 我最终将会话数据推送到模型的实例中,这样我就可以在项目上循环,然后执行 item.expanded。 item.save() 似乎没有额外数据的问题。但这种方法更受欢迎。让我们看看,treedata 是一个字典。但它会使用循环中的“项目”吗?我只是想让这个工作。除非 (item.id) 实际上只是一个数字,否则我什么也得不到。换句话说,唯一有效的是 request.session.treedata.1 有没有办法解决这个问题?我什至不能将 item.id 用作 num。
    猜你喜欢
    • 2019-02-03
    • 2012-08-19
    • 2011-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-26
    相关资源
    最近更新 更多