【发布时间】: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决定。我知道这与您的主要问题无关,但这会使确定问题变得复杂。 -
谢谢!我再次编辑了我的问题以正确对应我的缩进。