【问题标题】:Jinja 2 - Value from listJinja 2 - 列表中的值
【发布时间】:2018-10-21 23:20:27
【问题描述】:

当我将 object['userinfo'] 发布到 Jinja2 HTML 时,它会呈现此信息。

[{  
    'enemies':[  

    ],
    'url':'URL',
    'friends':[  
        {  
            'area':2,
            'same_interest':6
        }
    ]
}]

所以如果我得到object['userinfo'][0],它将返回对象:

{  
    'enemies':[  

    ],
    'url':'URL',
    'friends':[  
        {  
            'area':2,
            'same_interest':6
        }
    ]
}

但只要我试图从对象 (object['userinfo'][0]['url']) 中获取 URL 值, 我收到一个错误: jinja2.exceptions.UndefinedError: list object has no element 0 即使我可以在没有任何其他键的情况下访问“0”元素。

编辑: 完整的错误回溯:

     [2018-05-11 17:02:30,617] ERROR in app: Exception on /start [POST]
Traceback (most recent call last):
  File "/flask/venv/lib/python3.5/site-packages/flask/app.py", line 2292, in wsgi_app
    response = self.full_dispatch_request()
  File "/flask/venv/lib/python3.5/site-packages/flask/app.py", line 1815, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/flask/venv/lib/python3.5/site-packages/flask/app.py", line 1718, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/flask/venv/lib/python3.5/site-packages/flask/_compat.py", line 35, in reraise
    raise value
  File "/flask/venv/lib/python3.5/site-packages/flask/app.py", line 1813, in full_dispatch_request
    rv = self.dispatch_request()
  File "/flask/venv/lib/python3.5/site-packages/flask/app.py", line 1799, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/flask/app.py", line 117, in startreporting
    return render_template("report.html", items=loaded_r)
  File "/flask/venv/lib/python3.5/site-packages/flask/templating.py", line 135, in render_template
    context, ctx.app)
  File "/flask/venv/lib/python3.5/site-packages/flask/templating.py", line 117, in _render
    rv = template.render(context)
  File "/flask/venv/lib/python3.5/site-packages/jinja2/environment.py", line 1008, in render
    return self.environment.handle_exception(exc_info, True)
  File "/flask/venv/lib/python3.5/site-packages/jinja2/environment.py", line 780, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/flask/venv/lib/python3.5/site-packages/jinja2/_compat.py", line 37, in reraise
    raise value.with_traceback(tb)
  File "/flask/templates/report.html", line 29, in top-level template code
    <td>{{ x['userinfo'][0]['url'] }}</td>
  File "/flask/venv/lib/python3.5/site-packages/jinja2/environment.py", line 411, in getitem
    return obj[argument]
jinja2.exceptions.UndefinedError: list object has no element 0
127.0.0.1 - - [11/May/2018 17:02:30] "POST /start HTTP/1.1" 500 -

如何访问对象第一个数组中的键?

【问题讨论】:

  • 您的完整错误回溯是什么? (我真的应该有一个键盘快捷键!)
  • 添加了完整的错误回溯。

标签: python arrays json list jinja2


【解决方案1】:

它会 100% 工作

将此数据传递到烧瓶函数的上下文变量中

> user_info = [{  
>             'enemies':[  
>         
>             ],
>             'url':'URL',
>             'friends':[  
>                 {  
>                     'area':2,
>                     'same_interest':6
>                 }
>             ]
>         }]

在 html 文件中使用这个 jinja 模板代码

{% for data in user_info %}

    {{data.enemies}} # return []
    {{data.url}} #return 'URL'

    {% for frnd in data.friends %}
     {{frnd.area}} # return 2
     {{frnd.same_interest}} #return 6
    {%endfor}


{% endfor %}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-01
    • 2021-04-28
    • 1970-01-01
    • 2015-07-15
    • 1970-01-01
    • 2012-01-05
    • 1970-01-01
    相关资源
    最近更新 更多