在Python中将变量传递到HTML页面

在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

我有一个网页显示json文件中的数据。我想从该文件中获取数据并将其传递到html页面。现在,我只是想让信息显示出来,但我一直在出错。注意:唯一一行似乎给我带来麻烦的是““number=number()”行。如果我把它拿出来,让应用程序返回“hello world”或类似的内容,它就可以正常工作。这是我的密码

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\"]}"