【问题标题】:How can I print the 'route' list elements using jinja2 templates.?如何使用 jinja2 模板打印“路线”列表元素。?
【发布时间】:2019-11-05 09:37:09
【问题描述】:

我正在使用表单向带有名称的模板发送响应。如何使用 jinja2 模板打印“路线”列表元素。下面我给出了我的 index.py 页面代码和所需的输出。请建议我应该在 jinja 模板中使用的代码以获得 expexted 输出。

@app.route('/route',methods=['GET','POST'])
def index():
	form = Route()
	if request.method == 'POST':
		if form.validate_on_submit():
			tnum = request.form["T_No"]
			r = requests.get('https://api.railwayapi.com/v2/route/train/'+request.form['T_No']+'/apikey/<myapi>/').content
			return render_template('showRoute.html',form=r)
			return 'something wrong'
	return render_template('route.html',form=form)
 	
"route": [
        {
          "no": 1,
          "scharr": "SOURCE",
          "schdep": "06:15",
          "distance": 0,
          "halt": -1,
          "day": 1,
          "station": {
            "name": "KALKA",
            "code": "KLK",enter code here
            "lng": null,
            "lat": null
          }
        }

【问题讨论】:

    标签: python html flask jinja2


    【解决方案1】:

    首先将json response转换为dict,并传递给模板

    @app.route('/route', methods=['GET', 'POST'])
    def index():
        form = Route()
        if request.method == 'POST':
            if form.validate_on_submit():
                tnum = request.form["T_No"]
                r = requests.get('https://api.railwayapi.com/v2/route/train/'+request.form['T_No']+'/apikey/<myapi>/')
                try:
                    data = r.json()
                except:
                    data = None
                return render_template('showRoute.html', data=data)
        return render_template('route.html', form=form)
    

    然后使用模板中的数据

    {% if data %}
    <table style="width:100%" border="3">
        <tr>
            {% for key in data["route"][0].keys() %}
            <th>{{ key }}</th>
            {% endfor %}
        </tr>
        {% for route in data["route"] %}
        <tr>
            {% for key,value in route.items() %}
            {% if key == 'station' %}
            <td>{{ value['name'] }}</td>
            {% else %}
            <td>{{ value }}</td>
            {% endif %}
            {% endfor %}
            <br>
        </tr>
        {% endfor %}
    </table>
    {% else %}
    <p>No Routes found!</p>
    {% endif %}
    

    【讨论】:

    • 先生。 waynetech 谢谢,但上面的代码只显示火车名称和火车号码,其余为空白。 jinja 代码的问题在哪里。{% for train in data %} {{ data[train].name }} {{ data[train].number }} {% endfor %} {% for route in data %} {{ route['day'] }} {{ route['distance'] }} {% endfor %}
    • 您想要 html 或 json 响应?添加您在上述问题中编写的html
    • 我收到了 json 格式的响应,但我想打印路线列表中的“站名”和“站号”(我在上面的原始问题中上传的文件)。请参阅我的问题中的第二个文件(python 文件之后的文件)。
    • 我已经更新了答案,假设您的路线类似于 {"routes": [{"no":1 ...}{}{}]}
    猜你喜欢
    • 1970-01-01
    • 2015-08-30
    • 2019-11-11
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-14
    相关资源
    最近更新 更多