【问题标题】:Django TemplateSyntaxError Could not parse the remainder: '()'Django TemplateSyntaxError 无法解析剩余部分:'()'
【发布时间】:2011-07-11 00:16:20
【问题描述】:

我正在尝试在 Django 模板页面中迭代字典字典

       {% for (key_o, value_o) in f_values.items() %}
            <tr class="row {% cycle 'odd' 'even' %}">
                {% for (key_i, val_i) in value_o.items() %}
                    <td class="tile ">
                        {{ val_i }} 
                    </td>
                {% endfor %}    
            </tr>
        {% endfor %}

但得到错误

TemplateSyntaxError at /tree/branches/
Could not parse the remainder: '()' from 'f_values.items()'

是什么导致了错误?

--更新

这就是我创建f_values 的方式

        columnValues = []
        for idx_o, val_o in enumerate(results['values']):
            columnValues[idx_o] = {}
            for idx_i, val_i in enumerate(val_o):
                columnValues[idx_o][idx_i] = {}
                columnValues[idx_o][idx_i]['value'] = val_i
                name = columnNames[idx_i]
                columnValues[idx_o][idx_i]['name'] = name
                columnValues[idx_o][idx_i]['format'] = {}
                for val_f in formats:
                    if (name == val_f.Header) :
                        columnValues[idx_o][idx_i]['format']['LowerLimit'] = val_f.LowerLimit



data = {
        'f_values': columnValues,             
       }

【问题讨论】:

    标签: python django django-templates


    【解决方案1】:

    你不需要使用()来调用模板中的方法,你可以使用f_values.items。这种表示法适用于列表、元组和函数。

    例如,如果您有以下 Python 值:

        lst = ['a', 'b', 'c']
        di = {'a': 'a'}
        class Foo:
           def bar(self): pass
        foo = Foo()
    

    在您的模板中,您可以像这样访问它们:

        {{ lst.0 }}
        {{ di.a }}
        {{ foo.bar }}
    

    对于您的代码:

          {% for (key_o, value_o) in f_values.items %}
                <tr class="row {% cycle 'odd' 'even' %}">
                    {% for (key_i, val_i) in value_o.items %}
                        <td class="tile ">
                            {{ val_i }} 
                        </td>
                    {% endfor %}    
                </tr>
            {% endfor %}
    

    【讨论】:

    • 如果键之间有空格怎么办?使用该键需要使用什么选择器?
    • @VishnuYS 没有空格键的标准解决方案。我会尽量避免使用空格和连字符,但您也可以查看这个问题以了解一些解决方法:stackoverflow.com/questions/2970244/…
    • 您好,我想在模板中使用 user.has_module_perms(package_name) 或 user.has_perms(perm_list, obj=None),如何将参数传递给方法?
    猜你喜欢
    • 2015-03-06
    • 2011-11-06
    • 2018-03-31
    • 2016-06-04
    • 1970-01-01
    • 2019-12-20
    • 2017-11-18
    • 1970-01-01
    • 2013-10-04
    相关资源
    最近更新 更多