Flask筆記(2)--flask的jinja2模板引擎
模板
flask使用jinja2渲染模板。
render_template()
render_template('*.html',引數)
方法可以讓檢視函式返回一個模板,就是HTML頁面,模板的路徑預設從template開始查詢。render_template_string()
用來渲染字串。
向模板傳遞引數
在前端頁面中有許多引數據需要由後端傳遞,在html頁面中用{{ }}
為資料預留位置。render_template()傳遞引數的方式有兩種:
#test.html頁面
<p>{{ name }}</p>
<p>{{ age }}</p>
#檢視函式中:
#第一種方式:以鍵值對方式#
def func():
return render_template('test.html', name='Tom', age=19)
#第二種:字典引數#
def func():
args={'name':'Tom', 'age':19}
return render_template('test.html', **args)
模板中的流程語句:for,if
在模板中也可以使用佛for語句和if語句,使用語法和在python中一樣,但是for和if的語句要放在{% %}
中。
#html中
{% if 條件 %}
html語句
{% else %}
html語句
{% endif %}
{% for i in 可遍歷的物件 %}
html語句
{% endfor %}
過濾器
過濾器可以處理變數,把原始的變數處理後展示出來。
語法:
{{avatar|default('xxxx')}}
常用過濾器:
- default過濾器:如果當前變數未被定義,這時候可以指定預設值。
- length過濾器:求變數(列表字串陣列字典等)的長度
- capitaliz: 字母字串首字母大寫
- lower: 全部小寫
- trim: 去除字串前後的空白字元
- reverse:字串反轉
- format(): 格式化輸出。
自定義過濾器
過濾器其實就是一個函式而已,所以當內建過濾器無法滿足需要時,可以自定義過濾器。
#首先定義一個函式
def func(l):
return l[:3] #返回傳入列表的前三個值
#如何把這個函式變成一個過濾器呢?
#第一種方法,使用flask應用物件那個提供的“add_template_filter方法
app.add_template_filter(func,'func') #第一個引數為過濾器函式名,第二個引數為過濾器的名稱,我們在模板中使用時就是使用則個名稱
#第二種方法,使用裝飾器,在定義函式時,新增上裝飾器就可以了
@app.template_filter('func[過濾器名]')
def func():
pass
block-繼承的用法
block是用來讓子類html模板繼承父類html模板的東西。把一些公共的程式碼放在父模板中,避免每個模板寫同樣的程式碼
{% extends 'xxx.html' %} #繼承xxx.html模版
#在父模板中:
{% block name(介面名) %}{% endblock %} #為子html留下介面以便子模板新增內容
#子模板中:
{% block name(介面名) %}
程式碼體
{% endblock %} #在子模板中使用介面
載入靜態檔案
url_for('static', filename='路徑')
flask載入靜態檔案是從static檔案開始查詢的
<img src="{{ url_for('static',filename='*.jpg' }}">
flask獨有的標籤內容
+定義變數
set定義的變數在頁面內有效,with定義的變數只在with中有效
{% set name='Tom' %}
{% with age=20 %}
變數age: {{ age }}
{% endwith %}
+巨集定義:macro
#在巨集定義的頁面中定義,以macro.html為例
{% macro myinput(name, value='', type='text') %}
<input type="{{ type }}" name="{{ name }}" value="{{ value }}">
{% endmacro %}
#在其他頁面中引用
{% from 'macro.html' import myinput %}
<h4>登陸表單</h4>
<form action="">
使用者名稱:{{ myinput('username') }}<br>
密 碼:{{ myinput('password', type='password') }}
</form>
錯誤頁面定製
@app.errorhandler(404)
def page_not_found(e):
return render_template('404.html')
相關推薦
Flask筆記(2)--flask的jinja2模板引擎
模板 flask使用jinja2渲染模板。 render_template() render_template('*.html',引數)方法可以讓檢視函式返回一個模板,就是HTML頁面,模板的路徑預設從template開始查詢。render
《Flask web開發》筆記2:模板---繼承、bootstrap
only world use 可能 clas 似的 () 目前 div 前言:今天重新梳理了一下前端方面的知識,發現學習東西還是要用,不然忘得快,廢話不多說,開始!! 一.模板繼承 1.概念: 書上說,模板繼承,類似Python上的繼承; 其實個人覺得和所有繼承
Flask:02-秒懂Flask會話控制與模板引擎
會話控制原理 說明:概念百度說明的很詳細,請自行百度 cookie 說明: 由於HTTP協議無狀態無連線的特點,導致一個使用者在同一網站做連續操作時,需要不斷的提供身份資訊;為了解決這個問題,我們可以通過cookie攜帶特定的資訊加以解決。當首次訪問網站時設定cookie資訊,以後每次再訪問該網站時
[js高手之路]Node.js模板引擎教程-jade速學與實戰2-流程控制,轉義與非轉義
title 學習 != 下一步 cas ase spa back name 一、轉義與非轉義 jade模板文件代碼: 1 doctype html 2 html 3 head 4 meta(charset=‘utf-8‘)
Flask - 模板引擎技術(模板繼承)
() scala span itl 模板繼承 edge utf-8 max blog 模板繼承 // base.jinja2 1 <!doctype html> 2 <html lang="en"> 3 <head> 4
flask中jinjia2模板引擎使用詳解1
模板 文本文 安全 檢查 引擎 分解 擴展名 結果 解釋 在之前的文章中我們介紹過flask調用jinja2模板的基本使用,這次我們來說一下jinjia2模板的使用 Jinja2 在其是一個 Python 2.4 庫之前,被設計 為是靈活、快速和安全的。 模板僅僅是文本文件
flask中jinjia2模板引擎的使用詳解3
編程語言 Python 接上文模板繼承 Jinji2中的模板繼承是jinjia2比較強大的功能之一。模板繼承可以定義一個父級公共的模板,把同一類的模板框架定義出來共享。這樣做一方面可以提取共享代碼,減少代碼冗余和重復的工作量另一方面,對於後期的維護和管理也非常方便。一個根模板(或叫基模板)主要有三部分
flask中jinjia2模板引擎使用詳解4
編程語言 Python 接上文For循環和其它編程語言一樣,for用來編輯列表中的項。下面以一個例子來說明for在flask的jinjia2模板中的使用。創建一個模板list.html代碼如下:{% %} {% %} {% %} <>{{ }}</>
flask中jinjia2模板引擎使用詳解5
編程語言 Python 接上文宏可以理解為函數,即把一些常用的模板片段做好封裝,以便於重用,減少工作量和維護難度。宏的定義很簡單:{%macro xxx()%}##這裏寫內容{%endmacro%}下面引用官方的一個例子進行說明:{% macro input(name, value=''
Spring Boot 2.0 整合Thymeleaf 模板引擎
reporting 配置信息 name www. title 建模 type 引擎 suffix 本節將和大家一起實戰Spring Boot 2.0 和thymeleaf 模板引擎 1. 創建項目 2. 使用Spring Initlizr 快速創建Spring Boot
Flask_學習筆記_05: Flask中的網頁模板
今天來學習一下Flask中網頁模板以及網頁模板引數的使用。 如果你是使用Pycharm pro版的話,建立專案的時候,選擇Flask專案,所有的基礎檔案和資料夾Pycharm會自動幫你創建出來,在網上找了張圖,僅供參考: 選擇專案型別:Flask,這裡注意你的Python版本建立好之後就是下面的樣子:
Express的模板引擎 - Jade學習筆記
THUDMTEAM 李相赫 介紹 Jade是一種Express的模板引擎 模板引擎是為了使使用者介面與業務資料(內容)分離而產生的,他可以生成特定格式的文件,用於網站的模板引擎就會生成一個標準的HTML文件。 Jade的語法 form
Volecity模板引擎學習筆記
工作原理 macro 結構 單變量 hashtable 力達 egg false 界面設計 轉自:https://blog.csdn.net/reggergdsg/article/details/50937433 最近項目中用到了volecity模板,這裏做一下筆記,學習中
Atitit 模板引擎總結 v4 saa 目錄 1. 模板引擎 1 1.1. 構成渲染引擎+指令系統 1 1.2. 模板語法mustache語法 es6 el語法 1 2. 常見模板步驟 1 2.
Atitit 模板引擎總結 v4 saa 目錄 1. 模板引擎 1 1.1. 構成渲染引擎+指令系統 1 1.2. 模板語法mustache語法 es6 el語法 1 2. 常見模板步驟 1 2.1. 1)定義模板字串
egg學習筆記(2)--靜態資源,模板(ejs),路由傳值
目錄結構 安裝ejs cnpm install egg-view-ejs --save ejs配置 //config/plugin.js 'use strict'; exports.ejs = { enable: true, package: 'e
Spring Boot學習筆記-Thymeleaf模板引擎的配置
寫在前面 在開發過程中,使用模板引擎是很有必要的。我之前學習SSM框架,一直是使用Freemarker作為模板引擎,現在學習了Spring Boot之後,知道Spring Boot推薦使用的模板引擎是Thymeleaf,那麼,對於我這種有點輕微強迫症的人來
spring boot 學習筆記 (4)模板引擎 Thymeleaf
Thymeleaf 是⾯向 Web 和獨⽴環境的現代伺服器端 Java 模板引擎,能夠處理 HTML、XML、JavaScript、CSS 甚⾄純⽂本。 Thymeleaf 特點 簡單說,Thymeleaf 是一個跟 Velocity、FreeMarker 類似的模板引擎,它可以完全替代 J
Flask模板引擎——Jinja2
模板是一個包含響應文字的檔案,其中包含用佔位變量表示的動態部分,其具體指只在請求的上下文中才能知道。使用真是隻替換變數,再返回最終得到的響應字串,這一過程稱為渲染。為了渲染模板,Flask使用了一個名為Jinja2的強大模板引擎。 1. 渲染模板 預設情
day76_淘淘商城專案_09_商品詳情頁動態展示實現(jsp+redis) + FreeMarker模板引擎入門 + 商品詳情頁靜態化實現(Win版本的nginx作http伺服器)_匠心筆記
淘淘商城專案_09 1、商品詳情頁面展示,動態展示(jsp + redis) 1.1、工程搭建 1.1.1、pom檔案 1.1.2、框架整合 1.1.3、springmvc.xml
doxygen筆記2-常用的doxygen約定註釋格式的模板
整篇用來收集各種常用的doxygen約定註釋格式的模板。方便實戰時使用,大部分例項來自拷貝網路的例項。 1. 檔案註釋 /********************************************************************