фляга Python, проблема с переменной JavaScript? - PullRequest
0 голосов
/ 15 марта 2019

мой раздел кода фляги, который имеет проблему main.py

from flask import Flask, render_template, url_for
import pandas as pd 
import json

app = Flask(__name__)


@app.route('/')
def home():
    df = pd.read_csv('test.csv')
    df = df.groupby('name')['marks'].sum()
    j = df.to_json(orient='index')
    return render_template("work.html",s=j)

if __name__ == "__main__":
    app.run(debug=True)

, и я хочу передать j в мой файл javascript, который выглядит так work.js

//pie chart
var s = {{ j|safe }};
var keys = [];
   for(var k in s) keys.push(k);
var value = [];
   for (var k in s) value.push(s[k]);

var data = [{
  values: value,
  labels: keys,
  type: 'pie'
}];

var layout = {
  height: 400,
  width: 500
};
Plotly.newPlot('myDiv1', data);

work.html

<html>
        <head>
        <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
        <script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
        <link rel="stylesheet" type="text/css" href="styles.css">
        </head>
        <body>
        <div class="navbar"><span>data representation with Plotly.js</span></div>

        <div class="wrapper">
            <div id="myDiv1"></div>
            <script type="text/javascript" src={{ url_for('static', filename='work.js')}}> 
            </script>
        </div>
        </body>
</html>

как передать переменную j в колбе в переменную s в файле javascript, который отображается с html-страницей и показывается справадовольны или скажите, что не отображается график Спасибо

1 Ответ

1 голос
/ 15 марта 2019

Вы не можете этого сделать. Вы должны вернуть этот json в свой метод флакона и сделать запрос ajax из javascript.

from flask import jsonify

@app.route('/')
def home():
    j = df.to_json(orient='index')
    return jsonify(j)

Я не знаю, есть ли в фляге что-то вроде JsonResponse, как у Джанго. Если да, вы должны использовать это как: return JsonResponse(j)

$.ajax({url: "your_url", success: function(result){
    //result is what you returned from flask
}});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...