首页 > 解决方案 > 我将 python 对象传递给模板(使用 jinja),它不适用于一个模板,但适用于其他模板

问题描述

我有一个国家对象列表,这些对象具有名称、大陆、人口、缩写等属性,我只是试图将该对象传递给 html 模板。我有其他路线都编码相同的工作正常但由于某种原因国家对象作为字符串传递,并且列表似乎是空的。

@app.route('/continents/<continent>/<country>')
def countryView(country, continent):
    countries = []
    for c in countriesWorld:
        if c.continent == continent:
            countries.append(c)
        if c.name == country:
            country = c
    return render_template('countryview.html', country=country,        
countries=countries), 200

这是我的 html/jinja 模板

{% extends "base.html" %}
{% block content %}
    <div id="countrycontainer">
        <h1>{{ country.name }}</h1>
        <img src="{{ "../static/img/flags/" ~ country.abbreviation ~ ".png" 
}}">
</div>

{% endblock %}}

如果我使用 '{{ country }} 而不是国家/地区名称,则会显示该名称,因此很明显它已作为字符串而不是对象传递,我无法弄清楚原因。任何帮助,将不胜感激

标签: pythonflaskjinja2

解决方案


尾随空格是导致问题的原因,country == c.name 因为这个尾随空格而从未评估为 true,因此作为字符串的原始变量“country”被传递给视图。


推荐阅读