【问题标题】:Extract from json into html using flask使用烧瓶从json提取到html
【发布时间】:2017-01-08 09:45:06
【问题描述】:

我正在编写一个基本网站,到目前为止,它可以从表单中获取输入并将值添加到 json 文件中。我还可以在“json 页面”中显示 json 数据。为此我做 (json.dump(myGetJsonStuffFunc), indent = 4, sort_keys=True) 这对网站的 API 部分有奇效。

我还想做的是检索该信息并将其显示在“常规”html 页面中,用户可以在其中获得更好的概览。

截至目前,我有一个名为 SetValuesToHtml 的函数,我希望它将一个键的值设置为变量,并在 render_template 调用之前在我的路由中调用它。但我不知道如何访问变量和存储在其中的信息。

这是我的完整视图.py:http://pastebin.com/cneKMtZf

问题(我希望?)是这些:

@app.route('/collection', methods = ['GET'])
def collectionH():
    data = SetValuesToHtml()

return render_template(
    'collection.html',
    title='This is our collection'
    )

和功能:

def SetValuesToHtml():
    checkData()


    with open(filename+".json", "r") as infile:
        data = json.load(infile)
        infile.close()
        pass

    for tech in data['techs']:
        return data.endposition
    pass

我很茫然,不知道该去哪里寻求帮助,因此我与您联系。我很乐意直接回答,但同样很高兴我会指导阅读内容。

谢谢

【问题讨论】:

  • 您的缩进有问题。 with open... 不是函数体的一部分。即使此缩进在您的实际代码中是正确的,您也不能在 for 循环中使用 return,因为 return 将在第一次迭代时终止该函数。
  • 其他几件事:无需对使用with 打开的文件调用close()。另外,我在您的代码中的几个点上不理解 pass 的预期功能。但请编辑您的问题以确保缩进与您自己的代码匹配。
  • 我没有注意到,当我粘贴代码时,它并没有像我的 ide 那样自动对齐它。我道歉!至于关闭,我被告知在打开文件后始终关闭文件以确保一致性。由于我没有遇到问题,我认为它有效。通过我被教导的是让函数知道它已经离开了块并且应该继续前进。迭代时返回或继续。不知道回报工作喜欢那样。
  • 使用 with 这样您就不必担心close(),因为它会在您退出其后面的缩进块后自动关闭文件。目前for tech in data['techs']: 不是SetValuesToHtml() 的一部分,因为它没有缩进成为功能块的一部分,这意味着return data.endposition 没有意义。您不需要pass 来结束函数,这由缩进和return 决定。我知道这与您的主要问题无关,但这会使确定问题变得复杂。
  • 谢谢!我再次编辑了我的问题以正确对应我的缩进。

标签: python json flask


【解决方案1】:
def SetValuesToHtml():
    checkData()


    with open(filename+".json", "r") as infile:
        data = json.load(infile)
        infile.close()
        pass

    for tech in data['techs']:
        return data.endposition
        pass

我怀疑最后几行应该是

    return data['techs']['endpos']

而不是

    for tech in data['techs']:
        return data.endposition
        pass

根据您的其余代码,data['techs'] 是一个 dict,而不是一个对象,并且在其他地方使用的键是 'endpos',而不是 'endposition'。

【讨论】:

  • 我试过这个,但只是得到一个新的错误。不过会阅读这个。感谢您的宝贵时间。
  • 没问题。我希望你能弄清楚。
猜你喜欢
  • 1970-01-01
  • 2021-01-23
  • 2018-06-08
  • 1970-01-01
  • 1970-01-01
  • 2017-04-16
  • 2017-07-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多