Jinja中的XML而不是HTML

时间:2014-11-21 15:45:28

标签: flask jinja2

我发现自己在使用Flask,Python和Jinja的应用程序中使用这种代码:

<div class="member">Mircea Lungu</div>
<div class="member">Riri Lungu</div>

当我真正喜欢做的是:

<member>Mircea Lungu</member>
<member>Riri Lungu</member>

并在其他地方指定<member>必须映射到某种<div>的事实。它可以更好地分离内容和格式。

实现这一目标的最佳方式是什么?

1 个答案:

答案 0 :(得分:3)

取决于您希望如何显示它,但您可以这样做:

<强> app.py

from flask import Flask, render_template, make_response

app = Flask(__name__)

@app.route('/sitemap.xml')
def sitemap():

    values = [
        {'name': 'John', 'surname': 'Doe', 'age': 25},
        {'name': 'Jane', 'surname': 'Doe', 'age': 19}
    ]

    template = render_template('sitemap.xml', values=values)
    response = make_response(template)
    response.headers['Content-Type'] = 'application/xml'

    return response

<强> sitemap.xml的

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
    {% for val in values %}
    <person>
        <name>{{val.name}}</name>
        <surname>{{val.surname}}</surname>
        <age>{{val.age}}</age>
    </person>
    {% endfor %}
</urlset>

您还可以查看烧瓶网站上发布的 snippet