【问题标题】:Is there a better way to iterate over tuples in a (Django) template in Google App Engine?有没有更好的方法来迭代 Google App Engine 中(Django)模板中的元组?
【发布时间】:2011-04-28 06:40:37
【问题描述】:

基本上,我要做的是在Google App Engine 的模板中呈现os.environ。我相信该技术是(或改编自)Django 模板引擎 0.96 版(但如果我错了,请纠正我)。

我发现 this question 建议您可以这样做:

{{ for key, value in environ}}

但是当我尝试这样做时,我收到一条错误消息:

'for'五个词的语句应该以'reversed'结尾:for key, value in environ

我猜这个问题是关于另一个版本的 Django 的?

顺便说一句,environ的值在渲染模板之前设置为os.environ.items()

无论如何,我想出了一个我可以使用的 key_value_pair 类:

class key_value_pair:
    def __init__(self, key, value):
        self.key = key
        self.value = value

def make_kvp(key, iter):
    return key_value_pair(key, iter[key])

make_kvp 是我稍后用来设置environ 模板值的小型“工厂”方法,如下所示:

map(lambda x : make_kvp(x, os.environ), os.environ)

这样做时一切正常,但由于我对这里使用的技术完全陌生,我只是想确保我没有监督一些明显更简单的解决方案。

【问题讨论】:

    标签: python google-app-engine django-templates


    【解决方案1】:

    只需使用单个名称迭代序列,然后索引名称以获取各个元素。

    【讨论】:

    • 索引是指kvp[0]?因为我试过了,但它不起作用。但我想我的语法不正确。我收到 Could not parse the remainder: [0] 错误。
    • 您在 Django 模板中使用句点来索引序列。 kvp.0
    • @klausbyskov:在您的模板中使用.kvp.0。模板语言不是 Python。您可能想查看更多 Django 教程。
    • 非常感谢你们两位。 @S.Lott 你是完全正确的,我 确实 必须阅读更多的 Django 文档,但我今天已经阅读了很多(其他)文档,我只是想让我的脚湿透一些编码。我被卡住了。我很傻,但我相信你知道这种感觉。
    • “我相信你知道这种感觉”。可悲的是,不,我不知道那种感觉。对不起。
    【解决方案2】:

    另外,在模板中你应该这样写:

    {% for x in dic %}
    
    {% endfor %}
    

    【讨论】:

      猜你喜欢
      • 2011-12-19
      • 2010-12-27
      • 2017-10-24
      • 1970-01-01
      • 1970-01-01
      • 2011-03-31
      • 2020-12-06
      • 1970-01-01
      • 2019-12-09
      相关资源
      最近更新 更多