[雪峰磁針石部落格]flask構建自動化測試平臺3-模板

書籍尋找發表於2018-08-22

3-模板

理想情況下,前端和後端元件之間的完全隔離。我們可以在很大程度上使用Jinja來實現這一目標。

到本章將擴充套件我們的應用程式,為所選出版物顯示不止一個標題。我們將為每個出版物顯示多篇文章,每篇文章都連結到原始文章,我們的邏輯和檢視元件將在很大程度上分開。在本章中,我們將介紹以下主題:

介紹Jinja

Jinja是一個Python模板引擎。它允許我們輕鬆定義由Python填充的動態HTML塊。即使對於多個靜態網頁的網站,HTML模板也很有用
有,如修改頁首和頁尾。Flask基於Jinja,儘管可以單獨使用Jinja,但Jinja仍然是Flask的固有部分。Flask和Flask提供了幾種直接與Jinja工作的方法。預設情況下,Flask假定你儲存了所有的Jinja模板位於您的應用程式的templates子目錄中。

Jinja模板使用

home.html


<html>
    <head>
        <title>Headlines</title>
    </head>
    <body>
        <h1>Headlines</h1>
        {% for article in articles %}
            <b><a href="{{article.link}}">{{article.title}}</a></b><br />
            <i>{{article.published}}</i><br />
            <p>{{article.summary}}</p>
            <hr />
        {% endfor %}

    </body>
</html>

import feedparser
from flask import Flask
from flask import render_template

app = Flask(__name__)

RSS_FEEDS = {`bbc`: `http://feeds.bbci.co.uk/news/rss.xml`,
             `cnn`: `http://rss.cnn.com/rss/edition.rss`,
             `fox`: `http://feeds.foxnews.com/foxnews/latest`,
             `iol`: `http://www.iol.co.za/cmlink/1.640`}


@app.route("/")
@app.route("/<publication>")
def get_news(publication="bbc"):
    feed = feedparser.parse(RSS_FEEDS[publication])
    return render_template("home.html", articles=feed[`entries`])

if __name__ == "__main__":
    app.run(host=`0.0.0.0`,port=8000, debug=True)

image.png

參考資料


相關文章