摘要:模板模板引擎說明模板文件就是按照一定的規則書寫的展示效果的文件模板引擎就是負責按照指定規則進行替換的工具模板引擎選擇一渲染模板的方法將渲染的模板進行返回渲染字符串返回實例將模板內容響應給用戶渲染一內容響應給用戶原諒色二模板的語法模板中只存
day2模板 模板引擎
說明:模板文件就是按照一定的規則書寫的展示效果的HTML文件 模板引擎就是負責按照指定規則進行替換的工具
模板引擎選擇jinja2
一、渲染模板的方法
render_template()
render_templates_string()
實例
@app.route("/") def index(): #將模板內容響應給用戶 return render_template("index.html") #渲染一內容響應給用戶 return render_template_string("二、模板的語法原諒色
")
模板中只存在倆種語法
變量
{{ var }}
#像模板文件中傳參 return render_template("index.html",title="首惡") {{ title }}
標簽
{% 標簽名 %}
注意:
在模板中使用字典中的鍵 需要像使用對象得方式來調用 {{data.key}}
如果在模板中給定的變量不存在 則插入的是空字符串 不會報錯
三、過濾器過濾器使用管道符 | 來使用的
{{ var|abs }} 返回一個數值的絕對值
default 設置默認值
只有當給定的變量不存在時 則執行默認值
當設置default的boolean的時候 會執行默認值
first: 取出變量中的第一個字符
last: 取出變量中的最后一個字符
format: 字符的格式化
length: 返回變量值的長度
join: 拼接成字符串
safe: 不轉義標簽 原樣顯示
lower 轉為小寫
upper 轉為大寫
replace 替換
striptages 去除HTML標簽
{{ data.html|striptags }}
四、標簽實例
{% if data.bool %}
實例
{% for i in data.xxxx %} {# 錯誤的迭代方法TypeError: "bool" object is not iterable #} {# {% for i in data.bool %}#}
注意:
break continue 不能夠在這里使用
{% for k,v in data.items() %}
變量 | 描述 |
---|---|
loop.index | 獲取當前迭代的索引 從1開始 |
loop.index0 | 獲取當前迭代的索引 從0開始 |
loop.first | 是否為第一次迭代 |
loop.last | 是否為最后一次迭代 |
loop.length | 迭代的長度 |
{# 多行注釋 #}
七、文件包含 include相當于把一個文件 拷貝到當前的你的包含的位置
實例
{% include "common/header.html" %}我是中間的內容{% include "common/footer.html" %}
注意:
包含的公共的文件中 只存放 公共的代碼 除此以外什么都不要存在
導入的時候 如果文件和在同一級別 直接導入就可以 如果包含在某個目錄中 需要寫出路徑
{% include "common/header.html" %} {% include "test.html" %}
?
八、宏 macro概念: 類似python中的函數
實例
在macro.html中
{% macro input(name,type="text",value="") %} {% endmacro %}
宏的調用
{{ input("text","username","") }} {{ input() }} {{ input(type="password",name="userpass") }}宏的導入 (1) import
{% import "test.html" as test %} {% import "common/test.html" as test %}(2) form import用戶名: {{ test.input(type="password",name="userpass") }}
{% from "test.html" import input %} {% from "common/test.html" import input %}用戶名: {{ input(type="password",name="userpass") }}
注意:
宏的調用只能在定義的下方去調用 否則未定義
宏如果存在形參 且沒有默認值 則可以調用(沒意義)
形參的默認值 需要遵循默認值規則 有默認值的參數 放右側
可以正常使用 關鍵字參數
九、繼承 extends{% extends %} 繼承某個模板
{% block %} 挖坑和填坑
{{ super() }} 調用被替換掉的代碼
{% block header %} {% block meta %} {% endblock %}{% block title%}首頁{% endblock %} {% block link %} {% endblock %} {% block script %} {% endblock %} {% endblock %}頭部 {% block con %} 我是中間的內容部分 {% endblock %}
{% extends "common/base.html" %} {% block title %} 我的首頁 {% endblock %} {% block style %} {{ super() }} p{color:green;} {% endblock %} {% block con %}我是首頁的內容
我是首頁的內容 {% endblock %}
注意:
如果當替換某個樣式的時候 所有原來的樣式 都消失了 去查看是否使用了super()
十、flask-bootstrap安裝
pip install flask-bootstrap
sudo pip3 install flask-bootstrap
使用
繼承 bootstrap/base.html 基礎模板 改造成適用于自己網站的base.html基礎模板
自己的base.html{% extends "bootstrap/base.html" %} {% block navbar %} {% endblock %} {% block content %}{% block pagecontent %} 網頁的中間內容部分寫在當前的位置 {% endblock %}{% endblock %}
使用 index.html
{% extends "common/base.html" %} {% block title %} 首頁 {% endblock %}十一、錯誤頁面的定制 manage.py
@app.errorhandler(404) def page_not_found(e): return render_template("common/error.html",error=e,code=404) @app.errorhandler(500) def server_error(e): return render_template("common/error.html",error=e,code=500)error.html
{% extends "common/base.html" %} {% block title %} {{ code }}錯誤 {% endblock %} {% block pagecontent %}十二、視圖傳遞多個參數 (1) 原始傳參{{ error }}{% endblock %}
@app.route("/") def index(): return render_template("index.html",arg1=1,arg2=2...)(2) 使用字典
@app.route("/") def index(): return render_template("index.html",arg={arg1:1,arg2:2...}) kwarg={arg1:1,arg2:2...} return render_template("index.html",``)(3) 使用全局變量g
@app.route("/") def index(): g.name = "張三" g.age = 18 return render_template("index.html") 模板中(4) 使用 **locals()
- {{ g.name }}
- {{ g.age }}
@app.route("/") def index(): name = "張三" age = 18 print(locals()) return render_template("index.html",**locals()) 模板中
@app.route("/test/") def test(): print(url_for("index",_external=True)) return "test"十四、加載靜態資源
靜態資源:圖片,css,js,視頻,音頻,,
實例
flask入門3-表單
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/41825.html
摘要:每天的內容跑起來模板引擎表單文件上傳郵件發送一框架的簡介模型負責數據的操作視圖負責數據的展示控制器控制你的的操作以及視圖模板的渲染在中叫做模型負責數據的操作控制你的的操作以及視圖模板的渲染業務邏輯的操作模板負責數據的展示二架構三概念是 flask 每天的內容 flask跑起來 模板引擎 flask表單 文件上傳郵件發送 flask-sqlalchemy 一、web框架的簡介 M ...
摘要:示例如下靜態路由使用動態變量的路由未指定變量類型使用動態變量的路由指定變量類型指定的路由變量,可以作為被裝飾的函數參數傳入進來。 開始決定認真的在網上寫一些東西,主要原因還是在于希望能提升學習效果。雖說python寫了有幾年,但是web后端框架的確沒怎么接觸過,買了本狗書寥寥草草的過了一遍,發現很多東西還是理解不深,真的是好記性不如爛筆頭,知識也要從基礎開始,退回來好好看看官方文檔,再...
摘要:我們的論壇項目就使用了該框架。此外,麥子學院也有一個入門視頻教程,一共小時的視頻教程,涵蓋開發的方方面面,包括環境的搭建,語法介紹,項目結構的組織,全球化,單元測試等內容。博客地址更多閱讀的機制三個框架的對比 前面兩篇文章中我們已經了解 Web(HTTP)服務器,Web應用程序,Web框架,WSGI這些 Python Web 開發中的概念。我們知道,Web框架通過將不同Web應用程序中...
閱讀 2315·2021-11-24 09:39
閱讀 3043·2021-10-15 09:39
閱讀 3097·2021-07-26 23:38
閱讀 2294·2019-08-30 11:14
閱讀 3417·2019-08-29 16:39
閱讀 1718·2019-08-29 15:23
閱讀 785·2019-08-29 13:01
閱讀 2670·2019-08-29 12:29