无法解析 Flask Jinja 模板中的 JSON 对象
Not able to parse JSON object in Flask Jinja template
我有一个简单的JSON数据:
{"thisdata": ["/home/fyp/Desktop/AVA/AVA-STORAGE", "Network has already been configured since nexpose-pc is in virtualbox! ...", "/home/fyp/Desktop/AVA/AVA-APP/RunGUI", "ubuntu-trusty\t192.168.0.21", "", "/home/fyp/Desktop/AVA/AVA-APP/RunGUI", "centos-7\t192.168.0.22", "", "/usr/sbin/apache2", "[sudo] password for fyp: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message", "(' * Restarting web server apache2\n ...done.\n', None)", "/usr/local/packer/packer", "/usr/bin/virtualbox", "centos 8 is not configured, going to install distribution", "Traceback (most recent call last):", "File \"../RunCMD/ava.py\", line 684, in <module>", "createvm.runPacker()", "File \"../RunCMD/ava.py\", line 124, in runPacker", "packer_tmp + '/' + self.Hostname + '_template.json')", "File \"/usr/lib/python2.7/shutil.py\", line 82, in copyfile", "with open(src, 'rb') as fsrc:", "IOError: [Errno 2] No such file or directory: 'TEMPLATES/redhat/template.json'"]}
我试图在我的 Flask 应用程序的模板中解析,但我似乎不知道该怎么做。
注意:不使用 jsonify()
我使用 json.dumps()
并将 JSON 发送到网页我可以打印整块 JSON 数据但未格式化。
这是我的主要应用程序:
@app.route('/', methods=['GET', 'POST'])
def home():
manual = HomeForm(request.form)
automatic = Automatic(request.form)
if request.method == 'POST':
if 'automatic' in request.form and automatic.validate():
run()
data_string = []
with open(logfile, 'r') as outfile:
for line in outfile:
data_string.append(line.strip())
json_string = jsonify({"thisdata": data_string})
print json_string
return render_template('index.html', form=manual, showouput='showouput', senddata=json_string)
flash('Please input all values!')
return render_template('index.html', form=manual)
如您所见,我正在尝试 运行 一个脚本,然后 return 使用 JSON 格式的文件中的某些行,如上所示。
但是我不知道如何解析 JSON,我感觉我没有以正确的方式发送 JSON 而且我也不知道如何呈现 JSON 在 Jinja 模板中。
我尝试在模板中打印 {{ senddata }}
和其他建议,但没有显示任何内容。
我所要做的只是解析列表而不是 json,因为我的主要动机是以 div 形式显示文件内容。在模板中,我只呈现列表:
data_string = []
with open(logfile, 'r') as outfile:
for line in outfile:
data_string.append(line.strip())
return render_template('index.html', form=manual, showouput='showouput', senddata=data_string)
{% if senddata %}
{% for n in senddata%}
<div>{{ n }}</div>
{%endfor%}
{% endif %}
我有一个简单的JSON数据:
{"thisdata": ["/home/fyp/Desktop/AVA/AVA-STORAGE", "Network has already been configured since nexpose-pc is in virtualbox! ...", "/home/fyp/Desktop/AVA/AVA-APP/RunGUI", "ubuntu-trusty\t192.168.0.21", "", "/home/fyp/Desktop/AVA/AVA-APP/RunGUI", "centos-7\t192.168.0.22", "", "/usr/sbin/apache2", "[sudo] password for fyp: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message", "(' * Restarting web server apache2\n ...done.\n', None)", "/usr/local/packer/packer", "/usr/bin/virtualbox", "centos 8 is not configured, going to install distribution", "Traceback (most recent call last):", "File \"../RunCMD/ava.py\", line 684, in <module>", "createvm.runPacker()", "File \"../RunCMD/ava.py\", line 124, in runPacker", "packer_tmp + '/' + self.Hostname + '_template.json')", "File \"/usr/lib/python2.7/shutil.py\", line 82, in copyfile", "with open(src, 'rb') as fsrc:", "IOError: [Errno 2] No such file or directory: 'TEMPLATES/redhat/template.json'"]}
我试图在我的 Flask 应用程序的模板中解析,但我似乎不知道该怎么做。
注意:不使用 jsonify()
我使用 json.dumps()
并将 JSON 发送到网页我可以打印整块 JSON 数据但未格式化。
这是我的主要应用程序:
@app.route('/', methods=['GET', 'POST'])
def home():
manual = HomeForm(request.form)
automatic = Automatic(request.form)
if request.method == 'POST':
if 'automatic' in request.form and automatic.validate():
run()
data_string = []
with open(logfile, 'r') as outfile:
for line in outfile:
data_string.append(line.strip())
json_string = jsonify({"thisdata": data_string})
print json_string
return render_template('index.html', form=manual, showouput='showouput', senddata=json_string)
flash('Please input all values!')
return render_template('index.html', form=manual)
如您所见,我正在尝试 运行 一个脚本,然后 return 使用 JSON 格式的文件中的某些行,如上所示。
但是我不知道如何解析 JSON,我感觉我没有以正确的方式发送 JSON 而且我也不知道如何呈现 JSON 在 Jinja 模板中。
我尝试在模板中打印 {{ senddata }}
和其他建议,但没有显示任何内容。
我所要做的只是解析列表而不是 json,因为我的主要动机是以 div 形式显示文件内容。在模板中,我只呈现列表:
data_string = []
with open(logfile, 'r') as outfile:
for line in outfile:
data_string.append(line.strip())
return render_template('index.html', form=manual, showouput='showouput', senddata=data_string)
{% if senddata %}
{% for n in senddata%}
<div>{{ n }}</div>
{%endfor%}
{% endif %}