如何使用python和Flask解析YAML文件并在web上显示结果?

如何使用python和Flask解析YAML文件并在web上显示结果?,python,flask,yaml,Python,Flask,Yaml,我想构建一个简单的web应用程序,它能够显示使用python和Flask解析YAML文件的结果。我已经编写了代码,它可以工作,但结果与预期不一样。 这是我的密码: import yaml from flask import Flask, request, render_template, redirect, url_for #from pathlib import Path app = Flask(__name__) @app.route('/', methods=['GET','POST']

我想构建一个简单的web应用程序,它能够显示使用python和Flask解析YAML文件的结果。我已经编写了代码,它可以工作,但结果与预期不一样。 这是我的密码:

import yaml
from flask import Flask, request, render_template, redirect, url_for
#from pathlib import Path
app = Flask(__name__)

@app.route('/', methods=['GET','POST'])
def my_form_post():
    #path=Path('/Users/Devie Andriyani/EditFlask/categories.yaml') # set the path to your file here
    #if not path.exists():path.touch()
    if request.method == 'POST':
       #with open(path, 'w') as f:
           #f.write(request.form.get('Text Area',None))
        return redirect(url_for('my_form_post'))

    #with open(r'C:\Users\Devie Andriyani/EditFlask/categories.yaml') as f:
    #my_dict = yaml.safe_load(f)
    a_yaml_file = open("categories.yaml")
parsed_yaml_file = yaml.load(a_yaml_file, Loader=yaml.FullLoader)
print(parsed_yaml_file["countries"])
print(parsed_yaml_file["sports"])
return render_template('index.html')

if __name__ == '__main__':
   app.debug = True
    app.run()
<pre>{{ yml }}</pre>
下面是我的HTML代码:


你好
文本区


您打开了文件,将其保存在变量中,但没有将其传递到前端。您只需打印它,这就是它在控制台中打印的原因。你必须把这个传给前端

parsed_yaml_file = yaml.load(a_yaml_file, Loader=yaml.FullLoader)
# print(parsed_yaml_file["countries"]) # this will print in console not in frontend
# print(parsed_yaml_file["sports"])  # this too
return render_template('index.html', yml = parsed_yaml_file)
在这里,我将文件内容
parsed_yaml_文件
传递到前端,名称为
yml
。所以我们现在可以在前端访问它。但我们有一个问题
yaml.load
将返回一个字典。如果您想显示为字典,那么无需担心。但如果您想显示为
YAML
格式本身,则不应将其转换为YAML。您可以直接传递文件
a_yaml_文件

假设您想要yaml输出(希望您传递了
yml=a_yaml_文件
),那么在前端您必须使用
pre
标记


预期产量是多少?预期的输出是解析结果显示在文本区域/网页上,而不是(命令提示符)上。我发现解析结果显示在控制台上,而不是根据代码显示在文本区域/网页上,您只是打开文件并将其传递到前端。没错。。您想将数据传递到某个地方吗?我想将数据显示到前端,而不仅仅是在控制台上。“你知道吗?非常感谢你,@NavaneethaKrishnan给了你精彩的回答。”。但我仍然不知道应该更改哪些代码?真的很抱歉,我只是一个初学者和学习者。在python文件中更新render_模板函数。在这里,您必须将内容传递给frontendHi@Navaneetha,我已经根据您的答案更改了代码,但输出没有更改。非常感谢您,@Navaneetha。你的回答真的帮助了我。我的问题已经解决了。
{{ yml }}