У меня странная проблема с передачей правильных данных из моего скрипта Python в график (highcharts) в моем html. Я использую веб-фреймворк Flask и сервер Ubuntu. У меня есть две идентичные веб-страницы html по структуре, но они различаются передаваемыми им данными (данные происходят из двух отдельных баз данных). Каждая веб-страница имеет несколько графиков (высоких диаграмм), один конкретный график на второй веб-странице возвращает неверные точки данных. Он возвращает точки данных, предназначенные для первой веб-страницы. Эта проблема не проявляется, когда я тестирую на своем локальном хосте, только при работе на сервере (да, я правильно скопировал файлы на свой сервер). Поскольку вы, возможно, не сможете точно определить проблему, любые идеи относительно устранения неполадок или причин, по которым мой сервер Ubuntu не обновляется должным образом, очень приветствуются. Прошу прощения, если этот вопрос неясен, это не самая простая проблема передать через текст. Вот пример кода... Я запускаю скрипты на python на своем сервере, и они передаются на мой html через мой файл инициализации фляги.
СЦЕНАРИЙ НА PYTHON
import os, sqlite3, datetime, pandas as pd, numpy as np
PROJECT_ROOT = os.path.dirname(os.path.realpath(__file__))
DATABASE = os.path.join(PROJECT_ROOT, 'folder', 'my.db')
conn = sqlite3.connect(DATABASE)
c = conn.cursor()
averages_lm = (pd.read_sql("SELECT AVG(points_for) AS points_for, AVG(points_against) AS points_against, \
AVG(num_moves) AS moves, AVG(num_trades) AS trades, AVG(wins) AS wins, AVG(losses) AS losses, \
manager_name FROM standings WHERE curweek > 14 GROUP BY manager_name", conn))
averages_ex = (pd.read_sql("SELECT AVG(points_for) AS points_for, AVG(points_against) AS points_against, \
AVG(num_moves) AS moves, AVG(num_trades) AS trades, AVG(wins) AS wins, AVG(losses) AS losses, \
manager_name FROM standings_ex WHERE curweek > 14 GROUP BY manager_name", conn))
def averages_LM():
global averages_lm
return averages_lm
def averages_EX():
global averages_ex
return averages_ex
ИНИТ-ФАЙЛ
from flask import Flask, render_template, session, request, jsonify, json
import requests
import os, sys
PROJECT_ROOT = os.path.dirname(os.path.realpath(__file__))
sys.path.append(os.path.join(PROJECT_ROOT, 'Yahoo_Fantasy'))
from stats_fantasy import *
app = Flask(__name__)
@app.route('/html1')
def LowerMerion():
averages = averages_lm()
len_averages = len(averages['managers'])
return render_template("html-1.html", title="title", averages=averages, len_averages=len_averages)
@app.route('/html2')
def SimgaChi():
averages = averages_ex()
len_averages = len(averages['managers'])
return render_template("html-2.html", title="title", averages=averages, len_averages=len_averages)
if __name__ == "__main__":
app.run(debug=True)
HTML (фрагмент)
<script>
$(function () {
$('#chart-4').highcharts({
chart: {
type: 'column'
},
title: {
text: 'Career Averages Per Season '
},
subtitle: {
text: 'Regular Season'
},
xAxis: {
categories: [ {% for i in range(len_managers) %} '{{ averages.manager_name[i] }}', {% endfor %}
],
crosshair: true
},
yAxis: {
min: 0,
title: {
text: 'Total Per Season'
}
},
tooltip: {
headerFormat: '<span style="font-size:10px">{point.key}</span><table>',
pointFormat: '<tr><td style="color:{series.color};padding:0">{series.name}: </td>' +
'<td style="padding:0"><b>{point.y:.1f} pts</b></td></tr>',
footerFormat: '</table>',
shared: true,
useHTML: true
},
plotOptions: {
column: {
pointPadding: 0.2,
borderWidth: 0
}
},
series: [{
name: 'Avg Wins',
data: [{% for i in range(len_managers) %} {{ averages.wins[i] }}, {% endfor %}]
}, {
name: 'Avg Losses',
data: [{% for i in range(len_managers) %} {{ averages.losses[i] }}, {% endfor %}]
}, {
name: 'Avg Moves',
data: [{% for i in range(len_managers) %} {{ averages.moves[i] }}, {% endfor %}]
}, {
name: 'Avg Trades',
data: [{% for i in range(len_managers) %} {{ averages.trades[i] }}, {% endfor %}]
}, {
name: 'Avg Draft Pick',
data: [{% for i in range(len_managers) %} {{ draft_pos.pick[i] }}, {% endfor %}]
}, ]
});
});
</script>
Опять же, происходит что-то странное... поскольку сценарий будет меняться, когда я изменяю текст для графиков, но по какой-то причине передаваемые ему данные - это данные из функции Averages_LM(). Я думаю, что я неправильно передал ему эти данные с самого начала, и теперь они, похоже, не хотят меняться.
{% for i in range(len_managers) %} {{ draft_pos.pick[i] }}, {% endfor %}
? - person Paweł Fus   schedule 21.07.2015