Django 學習第三天——模板變數及模板過濾器
一、模板路徑的查詢:
查詢順序:(現在哪找到就用那個)
首先在主目錄的 setting.py 檔案裡的 TEMPLATES 中的 DIRS 裡找;
其次如果 DIRS 中的 APP_DIRS : 'True' 的時候在 settings.py 中的 INSTALLED_APPS 裡註冊的 app 裡找 templates;
靜態頁面:
不隨著客戶端的變化而變化;
動態頁面:
內容隨著時間或不同的使用者變化而變化
二、模板變數使用規則:
1、語法:{{ 變數名 }}
2、命名由字母和數字及下劃線組成,不能以下劃線開頭;不能有空格和標點符號
3、可以使用字典,方法,模板,函式,列表等
4、不要和 python 或 django 關鍵字重名
5、變數值可以時任何資料型別
注意:
1、如果 data 是一個字典,且有 items 這個鍵時 ,那麼訪問 data.items 時將會訪問這個 key 名為 items 的值;當沒有這個 items 作為鍵時,將會時使用 items 這個方法(將字典中的所有鍵值對以元祖形式列出);
2、點(.)在模板渲染時有特殊含義;變數名中點(.)表示查詢;
3、如果結果是可呼叫的,則呼叫它時不帶引數。呼叫結果成為模板的值;
4、 渲染失敗,返回 '' (空)
例:
app book/views.py檔案:
/templates/book/indes.html檔案:
三、過濾器( filter):
作用:對變數進行過濾;在真正渲染出來之前,過濾器會根據功能處理好變數,然後得出結果後在替換原來的變數展示出來
add 將引數與值相加 首先嚐試轉換成整數相加,失敗,則嘗試所有可能,字串,列表等。{{ value|add:"2" }}
capfirst 首字母大寫,如果第一個字母不是字母則不起作用。{{ value|capfirst }}
date 日期格式化 {{ value|date:"D d M Y" }}
time 時間格式化 {{ value|time:"H:i" }} 格式化格式見官方文件: https://docs.djangoproject.com/en/2.1/ref/templates/builtins/#date
default 如果變數解析失敗,使用給定的預設值 。 {{ value|default:"nothing" }}(注意如果value是''空字串,輸出將會是'nothing')
first 返回列表的第一個元素 {{ value|first }}
last 返回列表的最有一個元素 {{ value|last }}
slice 返回一個列表的切片 {{ some_list|slice:":2" }}
join 連線字串列表 與str.join(list)一樣 {{ value|join:" // " }}
floatformat 浮點數格式化 不指定小數位引數,預設保留一個為小數
value Template Output
34.23234 {{ value|floatformat }} 34.2
34.23234 {{ value|floatformat:3 }} 34.232
length 返回字串或列表的長度 {{ value|length }}
length_is 判斷字串或列表長度是否指定的值,相等返回True {{ value|length_is:"4" }}
lower 字串中的字母都變小寫{{ value|lower }}
upper 字串中的字母都變大寫{{ value|upper }}
cut 剪下 {{ value|cut:" " }} —— 把字串中所有空格去掉
title 標題化,首字母大寫 {{ value|title }}
safe 關閉變數的自動轉義,使html標籤生效{{ value|safe }} ———— XSS: 跨域指令碼攻擊
注意:
使用引數的時候,冒號和引數之間不能有任何空格,一定要緊挨著
date 和 time 過濾器格式:
例:
關於自動轉義:
自動轉義是將變數的一些特殊字元,比如左右箭頭( < >)轉義成 html 程式碼,這樣做的目的時為了處理一些不安全的變數
< —— 轉義成 <
> —— 轉義成 >
' —— 轉義成 '
" —— 轉義成 "
& —— 轉義成 &
四、靜態檔案目錄:
在專案目錄下建立 static 的目錄,為了區分開各種型別的檔案分別建立 css,image,js 的目錄;
配置:
在主目錄的 settings.py 檔案中 新增 STATICFILES_DIRS 設定靜態檔案目錄路徑,同 templates
STATIC_URL = '/static/' 兩個 / 都要加,靜態檔案的存放位置;自定義,可以自定義寫(想些什麼寫什麼)
引用:
第一種:
硬編碼,通過 STATIC_URL 來引入
<link rel="stylesheet" href="/STATIC_URL定義的值/找到對應的檔案/">
第二種:
通過模板標籤
在要使用的 html 檔案上面 加上 {% load static %}
<link rel="stylesheet" href="{% static '所需檔案的相對路徑' %}">