<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
想象一下這樣一個場景,如果對於某個網站來說,如果你充值了Vip,你才可以看到隱藏內容了。你該怎麼做呢?
這個適合就需要jinja2的出場了
先寫一份程式碼,根據姓名渲染一個網頁,然後把姓名和vip變數傳入HTML模板中。
注意使用jinja2的HTML頁面是不能用瀏覽器直接開啟的,必須要啟動Flask,使用路由返回頁面
from flask import Flask, render_template app = Flask(__name__) @app.route('/space/<name>') def space(name): vip = True return render_template("space.html", name=name, vip=vip) if __name__ == '__main__': app.run(debug=True)
當html模板,接收到flask傳遞過來的name、vip
引數,在html中如何使用呢?
{{ }}
裝載一個變數,比如文中使用{{ name }}
在html中裝載name
變數{% %}
裝載一個語句,對於if語句的格式如下面的程式碼的8-11
行,必須要以{% if xxx %}
,以{% endif %}
結尾。<!doctype html> <html lang="en"> <head> <title>Hello from Flask</title> </head> <body> <h1>Hello {{ name }}!</h1> <!-- jinja2的if語句 --> {% if vip %} <h3>吆西,你觸發了,隱藏內容啦!</h3> {% endif %} </body> </html>
先說一下最終的結論:jinja2中裝載變數使用{{ }},裝載語句使用{{% %}},括號裡面都按Python的風格書寫即可!
在html中,我們裝載的變數,還有可能是一個列表,一個物件,一個字典等型別。
我們裝載的方式如下所示:
# python a = [1,2,3] b = Cat(name="Tom") c = {"name":"Jackson"} # html <h1>Hello {{ a[0] }}!</h1> <h1>Hello {{ b.name }}!</h1> <h1>Hello {{ c['name '] }}!</h1>
# 輸出結果
Hello 1!
Hello Tom!
Hello Jackson!
在html中,不僅僅要使用if語句,還有一個更重要的迴圈語句。jinja2的迴圈語句如下所示:
{% for item in navigation %} <li><a href="{{ item.href }}" rel="external nofollow" >{{ item.caption }}</a></li> {% endfor %}
上面的程式碼生成了len(navigation )
個li,每個li都指向item.href
的連結。
都看到這裡了,點個贊白!
Jinja2的模板繼承其實和物件的繼承有一些相似的地方。比如,可以減少很多冗餘的程式碼。接下來,我將展示一個Jinja2模板繼承的小例子:
我們建立一個base.html
,書寫如下程式碼:
<!DOCTYPE html> <html lang="en"> <head> <link rel="stylesheet" href="base.css" rel="external nofollow" /> <title>{% block title %}{% endblock %}</title> {% block head %}{% endblock %} </head> <body> <div id="body">{% block body %}{% endblock %}</div> </body> </html>
在上述程式碼中,{% block xxx %} {% endblock %}
表示開一個卡槽,方便後續頁面進行填寫。
接下來,編寫一個index.html繼承base.html頁面,具體方式如下所示:
{% extends "base.html" %} {% block title %}首頁{% endblock %} {% block body %} <h1>這裡是首頁</h1> <p class="detail"> 首頁的內容 </p> {% endblock %}
{% extends “base.html” %}
表示繼承base.html模板
{% block title %}首頁{% endblock %}
表示使用title卡槽。
首頁是卡槽的內容 body 卡槽也是一樣的
到此這篇關於Flask深入瞭解Jinja2引擎的用法的文章就介紹到這了,更多相關Flask Jinja2內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45