我正在努力解决如何在烧瓶中加载局部json。
from flask import Flask, render_template, json, url_for
def taiwan():
json_data = open(url_for('static', filename="data/taiwan.json"))
data = json.load(json_data)
return render_template('taiwan.jade', data=data)
这引发了一个IOError:没有这样的文件或目录:'/ static / css / taiwan.json'。但它仍然存在。
任何建议
答案 0 :(得分:14)
我最终得到了这个:
import os
from flask import Flask, render_template, url_for, json
def showjson():
SITE_ROOT = os.path.realpath(os.path.dirname(__file__))
json_url = os.path.join(SITE_ROOT, "static/data", "taiwan.json")
data = json.load(open(json_url))
return render_template('showjson.jade', data=data)
答案 1 :(得分:2)
您应该使用静态目录的路径来获取文件,url_for获取URI abs路径,而不是fs路径。试试这个
json_data = open(os.path.join(your_static_dir, "data", "taiwan.json"), "r")
答案 2 :(得分:0)
动态获取静态目录,并包含一个data
子目录,该子目录包含要加载的.json
文件。
import os
from flask import Flask, render_template, json, current_app as app
# static/data/test_data.json
filename = os.path.join(app.static_folder, 'data', 'test_data.json')
with open(filename) as test_file:
data = json.load(test_file)
return render_template('index.html', data=data)