簡體   English   中英

如何在 Flask 中返回 render_template?

[英]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 文件中准確寫入什么以獲得相同的結果,那就太好了。

更新:

我做了什么:

Python代碼

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')

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM