在 ajax 响应后在 Flask 中呈现 Jinja 模板
Rendering Jinja template in Flask following ajax response
这是我第一次接触 Flask + Jinja,但我过去经常使用 HandlebarsJS,所以我知道这是可能的,但我不确定如何使用 Flask 实现它:
我正在构建一个应用程序:用户输入一个字符串,该字符串通过 python 脚本进行处理,结果 ajax 返回到 client/Jinja 模板。
我可以使用 $("body").append(response) 输出结果,但这意味着我需要在追加中写一些讨厌的 html。
相反,我想在处理完结果后呈现另一个模板,并将该新模板附加到原始模板中。
这可能吗?
我的python:
from flask import Flask, render_template, request, jsonify
from script import *
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/getColors')
def add_colors():
user = request.args.get("handle", 0, type = str)
return jsonify(
avatar_url = process_data(data)
)
if __name__ == '__main__':
app.run()
没有关于您的 ajax 路线必须 return JSON 的规定,您可以 return HTML 完全像您对常规路线所做的那样.
@app.route('/getColors')
def add_colors():
user = request.args.get("handle", 0, type = str)
return render_template('colors.html',
avatar_url=process_data(data))
您的 colors.html
文件不需要是完整的 HTML 页面,它可以是您希望客户端附加的 HTML 的片段。因此,客户端需要做的就是将 ajax 响应的主体附加到 DOM.
中的适当元素
这是我第一次接触 Flask + Jinja,但我过去经常使用 HandlebarsJS,所以我知道这是可能的,但我不确定如何使用 Flask 实现它:
我正在构建一个应用程序:用户输入一个字符串,该字符串通过 python 脚本进行处理,结果 ajax 返回到 client/Jinja 模板。
我可以使用 $("body").append(response) 输出结果,但这意味着我需要在追加中写一些讨厌的 html。
相反,我想在处理完结果后呈现另一个模板,并将该新模板附加到原始模板中。
这可能吗?
我的python:
from flask import Flask, render_template, request, jsonify
from script import *
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/getColors')
def add_colors():
user = request.args.get("handle", 0, type = str)
return jsonify(
avatar_url = process_data(data)
)
if __name__ == '__main__':
app.run()
没有关于您的 ajax 路线必须 return JSON 的规定,您可以 return HTML 完全像您对常规路线所做的那样.
@app.route('/getColors')
def add_colors():
user = request.args.get("handle", 0, type = str)
return render_template('colors.html',
avatar_url=process_data(data))
您的 colors.html
文件不需要是完整的 HTML 页面,它可以是您希望客户端附加的 HTML 的片段。因此,客户端需要做的就是将 ajax 响应的主体附加到 DOM.