在Python中将变量传递到HTML页面
我有一个网页显示json文件中的数据。我想从该文件中获取数据并将其传递到html页面。现在,我只是想让信息显示出来,但我一直在出错。注意:唯一一行似乎给我带来麻烦的是““number=number()”行。如果我把它拿出来,让应用程序返回“hello world”或类似的内容,它就可以正常工作。这是我的密码在Python中将变量传递到HTML页面,python,html,variables,heroku,flask,Python,Html,Variables,Heroku,Flask,我有一个网页显示json文件中的数据。我想从该文件中获取数据并将其传递到html页面。现在,我只是想让信息显示出来,但我一直在出错。注意:唯一一行似乎给我带来麻烦的是““number=number()”行。如果我把它拿出来,让应用程序返回“hello world”或类似的内容,它就可以正常工作。这是我的密码 import os import json import urllib import ast from flask import Flask from flask import render
import os
import json
import urllib
import ast
from flask import Flask
from flask import render_template
app = Flask(__name__)
class Number(object):
def __init__(self):
self.aquire = urllib.urlopen("http://www.prices.datanab.net/us/gasoline_json")
self.unpacked = self.aquire.read()
self.data = json.loads(self.unpacked)
@app.route('/')
def index():
return render_template('prices.html')
@app.route('/us/gasoline', endpoint='gasoline')
def hello():
number = Number()
return number.data
@app.route('/us/gasoline_json', endpoint='gasoline_json')
def index():
return render_template('json/gasoline.json')
if __name__ == '__main__':
# Bind to PORT if defined, otherwise default to 5000.
port = int(os.environ.get('PORT', 5000))
app.run(host='0.0.0.0', port=port)
一旦我让这个部件工作,我想更换它
@app.route('/us/gasoline', endpoint='gasoline')
def hello():
number = Number()
return number.data
与
然后在html文档中使用一些代码来显示数据。在这一行中
self.data = json.dumps(self.unpacked)
您将从另一台服务器下载的数据(这会给您一个字符串)转储到json字符串中。因此,如果您下载的内容是:
{"some": ["json", "object"]}
你最终会得到:
"{\"some\": [\"json\", \"object\"]}"
这只是一个转义字符串。你正在做你需要的事情,你应该使用加载
而不是转储
编辑:此外,您下载的网页输出无效,json使用双引号来定义字符串,而不是单引号。“我一直收到一个错误”没有告诉我们任何事情。什么错误?我正在使用heroku,因此它会显示应用程序错误消息“应用程序中发生错误,无法提供您的页面。请稍后重试。如果您是应用程序所有者,请查看日志以了解详细信息。”如果我改为使用此
self.data=ast.literal\u eval(self.unpacketed)会怎么样
这段代码给了我一本字典作为结果。我尝试使用json.loads,但在terminal中出现错误“ValueError:Expecting property name:line 2 column 1(char 2)”。另一方面,一旦我知道如何将数据传递到html文件,我将如何在html中引用它?像一个特定的元素?NVM。我有json.loads要工作。结果表明,该文件在json文件中错误地使用了单引号。json.loads命令还提供了一个字典作为输出。
"{\"some\": [\"json\", \"object\"]}"