Как передать данные, не сериализуемые JSON, из фляги в файл javascript? - PullRequest
0 голосов
/ 07 марта 2019

В моем server.py у меня есть список, который отслеживает имена:

data = [
"Jim",
"Stanley",
"Michael",
"Kevin",
"Kelly"
]

выполнение {{data | tojson}} не работает для меня, потому что данные в этом формате не сериализуемы. Выполнение return render_template('ppc.html', data=data) также не позволяет файлу js обращаться к данным в server.py. Я также попробовал '{{data}}' этот формат в некоторых сообщениях, но ни один из них, похоже, не работает. У кого-нибудь есть другой способ?

1 Ответ

0 голосов
/ 07 марта 2019

Использовать jsonify метод.Это позволит вернуть list из view.Документация для jsonify .

Ниже приведен пример загрузки данных в шаблон с использованием Javascript.

Структура папки:

├── app.py
├── static
│   └── demo.js
└── templates
    └── simple.html

app.py:

from flask import Flask, render_template, jsonify

app = Flask(__name__)

@app.route("/get_data", methods=['GET'])
def get_data():
    data = ["Captain America", "Hulk", "Thor", "Wolverine"]
    return jsonify(data)

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

app.run(debug=True)

simple.html:

<html>
    <head>
        <title>Marvel Characters</title>
    </head>
    <body>
        <h3>List of Marvel Characters loaded from JS</h3>
        <div id="result"></div>
        <script src="{{ url_for('static', filename='demo.js') }}"></script>    
    </body>
</html>

demo.js:

window.addEventListener("load", function(){
    var xhttp = new XMLHttpRequest();
    xhttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
            var data = JSON.parse(this.responseText);
            var result = document.getElementById("result");
            for(var i=0;i<data.length; i++){
                result.innerHTML += data[i]+"<br>";
            }           
        }
    };
    xhttp.open("GET", "/get_data", true);
    xhttp.send();
});

Выход:

output of data loading from JS

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...