Jinja 中的 XML 而不是 HTML

mir*_*ngu 0 jinja2 flask

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

<div class="member">Mircea Lungu</div>
<div class="member">Riri Lungu</div>
Run Code Online (Sandbox Code Playgroud)

当我真正想做的是:

<member>Mircea Lungu</member>
<member>Riri Lungu</member>
Run Code Online (Sandbox Code Playgroud)

并在其他地方指定 a<member>必须映射到某种<div>. 它将允许更好地分离内容和格式。

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

Lea*_*let 7

取决于您想如何显示它,但您可以执行以下操作:

应用程序

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
Run Code Online (Sandbox Code Playgroud)

站点地图.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>
Run Code Online (Sandbox Code Playgroud)

您还可以查看发布在 Flask 站点上的此代码段