python脚本、flask框架和htm之间的链接问题

2024-03-29 08:13:34 发布

您现在位置:Python中文网/ 问答频道 /正文

在将正确的数据从python脚本传输到html中的图形(highcharts)时,我遇到了一个奇怪的问题。我使用的是FlaskWeb框架和Ubuntu服务器。我有两个结构相同的html网页,但它们传递给它们的数据不同(数据来自两个独立的数据库)。每个网页都有多个图表(highcharts),第二个网页上的一个特定图形是返回错误的数据点。它返回第一个网页的数据点。在本地主机上测试时,只有在服务器上运行时才会出现此问题(是的,我已将文件正确复制到服务器上)。由于您可能无法确定问题所在,因此非常欢迎您提出任何关于故障排除或我的Ubuntu服务器无法正常刷新的原因的想法。我很抱歉,如果这个问题不清楚,这不是最容易通过文字传达的问题。下面是示例代码…我在我的服务器上用python运行脚本,它们通过flask init文件中继到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

初始化文件

^{pr2}$

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\ulm()的数据。我想我从一开始就错误地传递了这个数据,现在它似乎不想改变。在


Tags: 数据namein服务器forlenasrange
1条回答
网友
1楼 · 发布于 2024-03-29 08:13:34

在第一次查看代码之后,您似乎在两个视图中返回了相同的数据。行:

averages = averages_LM()

两种观点都是一样的,不是吗

^{pr2}$

是吗?在

另外,如果你的两个html模板是相同的,你不需要创建两个单独的页面,你只需为两个视图使用一个模板,模板的内容将取决于你从视图传递的数据。在

相关问题 更多 >