Flask Render模板重复HTML

纳马

我有一个与JS集成的Flask应用程序。我的app.py文件如下所示:

import urllib
import requests
import time
from es import book

from flask import Flask, render_template, request, jsonify

app = Flask(__name__)

@app.route("/")
def index():
        current_origin = jsonify(book())
        return render_template('index.html', current_origin=current_origin)

if __name__ == "__main__":
    app.run(host='0.0.0.0', debug=True ,port=5000)

相应的JS看起来像这样:

$(document).ready(function() {
  console.log("ready!");

  $('#try-again').hide();

    // gets values from flask
    $.ajax({
      type: "GET",
      url: "/",
      success: function(data) {
        $('#results').append(data);
        console.log(data);
      },
      error: function(error) {
        console.log(error);
      }
    });
});

控制台正在打印从到的适当数据,es import book但是呈现的页面只是不断重复HTML而没有数据值(无休止的HTML重复附加到正确的div上,但没有我期望的数据)。我尝试了几种变体,$('#results').append(data)包括.html(data)、. text(data)等,但是我不明白我在这里做错了什么。

矮人

我知道发生了什么事。您需要分离端点以呈现页面并返回AJAX数据。试试这个:

@app.route("/")
def index():
    return render_template('index.html')


@app.route("/get_book")
def get_book():
    return jsonify(book())

然后更改url您的AJAX调用组件:

url: "{{ url_for('get_book') }}",

jsonify()返回一个Response对象。render_template()使用jinja呈现html页面。您的代码不断将相同的源HTML文档插入其自身,从而触发无限循环。您应该只使用render_template()呈现HTML页面和jsonify()来将数据发送到XHR调用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章