更改JSON文件时,Flask不会使用更新的JSON呈现页面。我怎样才能解决这个问题? Python版本2.7.6。 Flash版本0.9。 我的存储库位于https://github.com/harishvc/githubanalytics
#Starting Flask
#!flask/bin/python
from app import app
app.run(debug = True)
答案 0 :(得分:2)
问题不在于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)
这基本上就是你的代码。在index
路由处理程序中的任何位置都不会重新加载该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],})
然后只需让路由处理程序调用{{1}}函数:
refresh_data
我个人会更进一步,而是让@app.route('/')
@app.route('/index')
def index():
refresh_data()
return render_template("index.html", data=mydata)
加载一些内容,然后将数据保存到位于某个其他范围的某个列表中,我会让它返回数据以使其更安全。此建议以及其他错误/异常处理和其他清理工作留给您练习。