1. 程式人生 > >Flask筆記(2)--flask的jinja2模板引擎

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 %}

過濾器

  1. 過濾器可以處理變數,把原始的變數處理後展示出來。

  2. 語法:{{avatar|default('xxxx')}}

  3. 常用過濾器:

    • default過濾器:如果當前變數未被定義,這時候可以指定預設值。
    • length過濾器:求變數(列表字串陣列字典等)的長度
    • capitaliz: 字母字串首字母大寫
    • lower: 全部小寫
    • trim: 去除字串前後的空白字元
    • reverse:字串反轉
    • format(): 格式化輸出。
  4. 自定義過濾器

    ​ 過濾器其實就是一個函式而已,所以當內建過濾器無法滿足需要時,可以自定義過濾器。

#首先定義一個函式
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.      檔案註釋 /********************************************************************