jinja2模板規範 在當前項目中創建一個文件為templates的文件夾,將其設置為模板文件夾,新建的html為模板頁面, 在視圖函數中使用render_template(".html的文件", my_list=mylist),my_list作為在模板頁面使用的的變數 {{ my_list}} 過... ...
jinja2模板規範 在當前項目中創建一個文件為templates的文件夾,將其設置為模板文件夾,新建的html為模板頁面, 在視圖函數中使用render_template(".html的文件", my_list=mylist),my_list作為在模板頁面使用的的變數 {{ my_list}} 過濾器 符號 "|" 管道左邊作為輸入傳一個變數到管道右邊進行輸出 safe 對字元串的html標簽的代碼進行解析,並以html顯示在當前文件 reverse 翻轉 upper 大寫 lower 小寫等 自定義過濾器(本身相當於一個函數) @app.template_filter("valreverse") #將其添加到過濾器組中 def add_after(value): value += "Hello world" result = "¥" + value + "&&" return result 模板中的for和if {% for ret in result %} {% if loop.index == 1 %} <li style="background-color: red">{{ ret.data }}</li> alert({{ ret.data }}) {% elif loop.index == 2 %} <li style="background-color: green">{{ ret.data }}</li> {% elif loop.index == 3 %} <li style="background-color: fuchsia">{{ ret.data }}</li> {% else %} <li style="background-color: cyan">{{ ret.data }}</li> {% endif %} {% endfor %} 模板代碼的復用 巨集 {% macro func_macro() %} // 這裡填想要封裝的html代碼 {%endmacro %} {% import html模板 %} 導入到其他模塊中使用
該模板中含有func_macro函數 繼承 導入模板文件
// 繼承基類中的html代碼 {% "extends base_index_detail.html" %} // 以下代碼是進行挖坑和填坑的操作 {% block titleBloock %} // 自己獨有的代碼塊 {% endblock %} 包含 include() ignore missing // 忽略錯誤的
模板中特有的變數和函數 在py文件中和模板文件中都可以直接拿來使用,不需要傳參 request session g config url_for() get_flashed_messages() 與 flash搭配使用
代碼如下
@app.route("/login") def login(): g.name = "xiaoming" session["username"] = "zhangsan" flash("哈哈哈") flash("嘻嘻嘻") flash("呵呵呵") return render_template("demo_unique.html") html模板中的內容為 config: {{ config.DEBUG }} <br> session: {{ session["username"] }}<br> request: {{ request.url }}<br> g變數: {{ g.name }} <br> 兩個函數為: <a href="{{ url_for('index') }}">回到首頁</a><br/> flash結果為: {% for data in get_flashed_messages() %} {{ data }} {% endfor %} flask_wtf表單 pip install flask_wtf 原生的form表單和用類生成的對象,再用對象去創建這個表單 Web 表單是 Web 應用程式的基本功能 它是HTML頁面中負責數據採集的部件,表單有三個部分組成:表單標簽、表單域、表單按鈕, 表單允許用戶輸入數據,負責HTML頁面數據採集,通過表單將用戶輸入的數據提交給伺服器 CSRF 跨站請求偽造 CSRF全拼為Cross Site Request Forgery,譯為跨站請求偽造 CSRF攻擊 CSRF指攻擊者盜用了你的身份,以你的名義發送惡意請求 包括:以你名義發送郵件,發消息,盜取你的賬號,甚至於購買商品,虛擬貨幣轉賬...... 造成的問題:個人隱私泄露以及財產安全 開啟CSRF驗證 app.config['WTF_CSRF_ENABLED'] = True 防止CSRF攻擊 在客戶端向後端請求界面數據的時候,後端會往響應中的 cookie 中設置 csrf_token 的值在 Form 表單中添加一個隱藏的的欄位,值也是 csrf_token, 在用戶點擊提交的時候,會帶上這兩個值向後臺發起請求 後端接受到請求,以會以下幾件事件: 從 cookie中取出 csrf_token從表單數據中取出來隱藏的 csrf_token 的值進行對比 如果比較之後兩值一樣,那麼代表是正常的請求,如果沒取到或者比較不一樣,代表不是正常 的請求,不執行下一步操作