在ajax响应之后在Flask中渲染Jinja模板

Fra*_* Bi 4 javascript python ajax jinja2 flask

这是我第一次潜入Flask + Jinja,但我过去曾经使用过HandlebarsJS,所以我知道这是可能的,但我不知道如何用Flask解决这个问题:

我正在构建一个应用程序:用户输入一个字符串,通过python脚本处理,结果是ajax返回到客户端/ 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()
Run Code Online (Sandbox Code Playgroud)

Mig*_*uel 7

没有关于你的ajax路由必须返回JSON的规则,你可以像对常规路由一样返回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))
Run Code Online (Sandbox Code Playgroud)

您的colors.html文件不需要是完整的HTML页面,它可以是您希望客户端附加的HTML片段.因此,客户端需要做的就是将ajax响应的主体追加到DOM中的相应元素.

  • @chemist 只需执行`myDiv.innerHTML += htmlResponse`,其中`htmlResponse` 是从您对Flask 的ajax 调用返回的渲染html。我知道这是一个迟到的回复,但它可能对从谷歌来到这里的其他人(比如我)有用。 (2认同)