Python 烧瓶未拾取更新的JSON

Python 烧瓶未拾取更新的JSON,python,json,flask,Python,Json,Flask,更改JSON文件时,Flask不会使用更新的JSON呈现页面。我怎样才能解决这个问题?Python版本2.7.6。烧瓶版本0.9。 我的存储库位于 您的问题不在于JSON在更改时没有更新,而在于您的代码只加载该文件一次,特别是在导入该模块时,并且永远不会再加载该文件。显而易见的事情肯定会发生 为了更好地帮助您,您应该将代码的相关部分包括在问题中,而不仅仅是链接中,我将在这里为您提供: with open('path/to/jsonfile.json') as f: data = json

更改JSON文件时,Flask不会使用更新的JSON呈现页面。我怎样才能解决这个问题?Python版本2.7.6。烧瓶版本0.9。 我的存储库位于


您的问题不在于JSON在更改时没有更新,而在于您的代码只加载该文件一次,特别是在导入该模块时,并且永远不会再加载该文件。显而易见的事情肯定会发生

为了更好地帮助您,您应该将代码的相关部分包括在问题中,而不仅仅是链接中,我将在这里为您提供:

with open('path/to/jsonfile.json') as f:
    data = json.load(f)

mydata = []
for row in data['rows']:
    mydata.append({'name': result_row[0], 'count' : result_row[1],})

@app.route('/')
@app.route('/index')
def index():
    return render_template("index.html", data=mydata)
这基本上就是你的代码。
索引
路由处理程序中的任何位置都不会重新加载该json,并使用可能添加到json文件中的新数据重新填充
mydata
列表。因此,创建一个方法来实现这一点

mydata = []

def refresh_data():
    mydata.clear()  # clear the list on the module scope

    with open('path/to/jsonfile.json') as f:
        data = json.load(f)

    for row in data['rows']:
        mydata.append({'name': result_row[0], 'count' : result_row[1],})
然后简单地让路由处理程序调用
refresh\u data
函数:

@app.route('/')
@app.route('/index')
def index():
    refresh_data()
    return render_template("index.html", data=mydata)

我个人会更进一步,让
refresh\u data
加载一些数据,然后将数据保存到位于其他作用域的某个列表中,我会让它返回数据以使其更安全地使用。此建议以及其他错误/异常处理和其他清理工作留给您来完成。

您必须展示代码。请展示您的工作、您尝试过的代码示例、flash版本。。。任何有助于理解你的问题的信息都会帮助你得到一个符合你需要的答案。我想你需要双向绑定之类的东西。它可能不会自动以这种方式工作。在代码中的某个地方,您必须加载更新的JSON。@vaultah我用更多信息更新了我的问题,并链接到GitHub。
@app.route('/')
@app.route('/index')
def index():
    refresh_data()
    return render_template("index.html", data=mydata)