render_template 网页模板
模板簡單介紹:
視圖函數:視圖函數就是裝飾器所裝飾的方法,視圖函數的主要作用是生成請求的響應,這是最簡單的請求。實際上,視圖函數有兩個作用:處理業務邏輯和返回響應內容。在大型應用中,把業務邏輯和表現內容放在一起,會增加代碼的復雜度和維護成本。本節學到的模板,它的作用即是承擔視圖函數的另一個作用,即返回響應內容。
模板其實是一個包含響應文本的文件,其中用占位符(變量)表示動態部分,告訴模板引擎其具體的值需要從使用的數據中獲取,使用真實值替換變量,再返回最終得到的字符串,這個過程稱為“渲染”,Flask是使用 Jinja2 這個模板引擎來渲染模板
Jinja2(參考概念)
兩個概念:
?
Jinja2:是 Python 下一個被廣泛應用的模板引擎,是由Python實現的模板語言,他的設計思想來源于 Django 的模板引擎,并擴展了其語法和一系列強大的功能,其是Flask內置的模板語言。
模板語言:是一種被設計來自動生成文檔的簡單文本格式,在模板語言中,一般都會把一些變量傳給模板,替換模板的特定位置上預先定義好的占位變量名。
官方文檔
? 渲染模版函數
Flask提供的 render_template 函數封裝了該模板引擎
模板簡單理解就是把前后的代碼分離讓開發者高效的開發,讓代碼結構清晰,耦合度降低
?
使用render_template:
?
網頁模板需要flask內的render_template模塊:
?
傳參需要先定義好參數傳入時render_template()內的第一個參數是html模板名后續加參數,傳參時是賦值式? (在html內的標識)= (傳入的變量名),也可以用**args,把數據以key value 形式傳入字典把整個字典 **變量名傳入 到html里直接調用key即可。
render_template 函數的第一個參數是模板的文件名,后面的參數都是鍵值對
?
{%邏輯運算%}有邏輯運算時必須有{%end%}結束比如:
{%if sum < 1%}? ? ? |? ? ? ? ? {%for i in sum%}
{% endif %}? ? ? ? ? ? |? ? ? ? ? {% endfor %}
?
html文件內注釋可以使用{# 注釋內容 #},也可以使用html內的<!-- 注釋 -->注釋,但是在邏輯運算時如果使用html內的注釋會報錯,所以建議常用flask內置注釋方法?{# 注釋內容 #}
?
PY文件
# -*- encoding: utf-8 -*- # 網頁模板需要導入render_template from flask import Flask, render_templateapp = Flask(__name__)app.config.from_pyfile('config.ini')@app.route('/') def index():my_str = '你好世界'my_int = 123my_list = [1, 2, 3, 48, 93]my_dict = {'name': '星宇', 'age': 19}contect = {}contect['my_shijei'] = my_strcontect['myint'] = 0contect['mylist'] = [1, 2, 3, 48, 93]contect['mydict'] = {'name': '牛星宇', 'age': 19}# 使用render_template模塊來渲染模板文件,通過第二個參數傳遞數據變量# return render_template('day3.html', my_shijei=my_str, myint=my_int, mydict=my_dict, mylist=my_list)# 通過**引用來將嵌套dict直接傳遞給模板return render_template('day3.html', **contect)if __name__ == "__main__":app.run()HTML文件:
<!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta http-equiv="X-UA-Compatible" content="ie=edge" /><title>flask網頁模板的學習</title></head><body><div>這是我們第一個網頁模板</div><br />{# 這是注釋,最基本的模板語法輸出一個變量 #}{{ my_shijei + "李毅囧" }}<br />{# 模板語法可以以下標引用的方式輸出list元素#} {{ mylist[0]}}{{ mylist.1}}<br />{#模板可以做簡單的運算操作#}{{ myint + 10 }} <br />{# 模板可以通過調用key取value#}{{ mydict["name"] }}{{ mydict.age }}{#使用{%%}來定義簡單的邏輯控制代碼#}{% if myint %}整型存在 {% else %} 不存在 {#使用if判斷,一定要有endif用來判斷結束邏輯判斷#}{% endif %}<ul>{# 使用for循環來遍歷list #} {% for itme in mylist %}<li>{{ itme }}</li>{% endfor %}</ul>{# 使用 if for 嵌套來實現單雙行背景色#}<table style="padding:5px">{% for item in mylist %}{#使用loop關鍵字可以調用循環的索引,用來判斷下標單雙數#}{% if loop.index% 2 == 0 %}<tr style="background-color:tomato"><td style="border:1px solid black;">{{ item }}</td></tr>{%else%}<tr style="background-color:violet"><td style="border:1px solid black;">{{ item }}</td></tr>{% endif%} {% endfor %}</table></body> </html>?
轉載于:https://www.cnblogs.com/Niuxingyu/p/10154610.html
總結
以上是生活随笔為你收集整理的render_template 网页模板的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: k8s的安装部署
- 下一篇: 使用jQuery高效制作网页特效 第六章