[英]How to return render_template in Flask?
以下代碼從 .py 文件中完美運行,但我想將 HTML 分開並將其放在 templates/index.html 中。
我想我必須在 Flask 中使用 render_template 函數才能返回相同的結果。
# File dynamic_website.py
from owlready2 import *
onto = get_ontology("bacteria.owl").load()
from flask import Flask, url_for
app = Flask(__name__)
@app.route('/')
def ontology_page():
html = """<html><body>"""
html += """<h2>'%s' ontology</h2>""" % onto.base_iri
html += """<h3>Root classes</h3>"""
for Class in Thing.subclasses():
html += """<p><a href="%s">%s</a></p>""" % (url_for("class_page", iri = Class.iri), Class.name)
html += """</body></html>"""
return html
我創建了一個文件夾模板和一個文件 index.html。 我使用了 return render_template('index.html') 但它不起作用。 我必須向 return_template 函數添加哪些參數? “for Class in Thing.subclasses():”必須在 .html 文件或 .py 文件中? url_for 函數呢?
如果您可以編輯 .py 代碼並讓我知道我應該在 index.html 文件中准確寫入什么以獲得相同的結果,那就太好了。
更新:
我做了什么:
from flask import Flask, render_template
from owlready2 import *
from flask import Flask, url_for
onto = get_ontology("bacteria.owl").load()
app = Flask(__name__)
@app.route("/")
def ontology_page():
for Class in Thing.subclasses():
return render_template('index.html')
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<h1>{{ Class.name }}</h1>
</body>
</html>
您不能多次發送退貨。
如果您希望用戶看到 html 上的內容列表,請執行此操作。 render_template('index.html', things=Thing.Subclasses())
這會給 Jinja 一個列表,然后它可以在其中進行循環。
對於 html,你可以這樣做{% for s in things %} {{ s }} is something {% endfor %}
。 用s
做任何你想做的事, s
是列表中的一個子類。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.