Django的模板語言自定義,Django的中介軟體

2021-08-15 04:09:52 字數 1999 閱讀 7541

在該資料夾中建立乙個py檔案,可以任意取名

py檔案中要例項化乙個library物件

如下:

from django.template import library

register = library()

# filter裝飾器 可以被用在if中,但是最多引數只能傳兩個

@register.filter

def transe(n1, n2):

data = '喜歡'.format(n1, n2)

return data

# ******_tag 可傳多個引數但是不能用於if判斷(指在html中的)

@register.******_tag

def sum(*args)

num = 0

for i in args:

num += i

return

num

# 先載入這個檔案才能使用其中的方法

這是index頁面h1>

hello 使用者h1>

}h1>

h1>

body>

html>

概念:

中介軟體是乙個類

定義:

以後想要對所有的請求做統一操作時,用中介軟體。(幾個例外)

只是對少量的檢視函式做操作時,用裝飾器。

任務:1. 對使用者請求記錄日誌

2. 使用者登入驗證(只有login)

梳理:1. 類

- 繼承middlewaremixin

- 兩個方法

process_request

process_response,必須設定返回值

2. 應用中介軟體

middleware = [

...'***x.md.m1',

]3. 示例:

1. 對使用者請求記錄日誌

2. 使用者登入驗證 (只有login)

3. 許可權驗證

ps: 圖+方法+引數

中介軟體是有順序的,就像我們進門一樣進來是1 2 3 4 那我們出去就是4 3 2 1

我們建立乙個資料夾任意命名

然後在資料夾中建立乙個py檔案

建立乙個類繼承middlewaremixin

**如下

# 在請求頭中返回none才是正常進行下一步操作,

# 可以這麼思考如果沒有這個中介軟體那麼函式就沒有返回值,沒有返回值那就是預設返回none

if req.path_info == '/login/'

:return

none

user_info = req.session.get('user')

ifnotuser_info:

return redirect('/login/')

defprocess_response(self, rep)

return rep

寫完以後我們需要在與專案名字相同的檔案中是settings的middleware中新增

Django自定義模板函式

模板函式是使用於模板檔案的處理函式,模板函式的使用方式是 1.建立自定義函式資料夾 想要使用自定義模板函式的話需要先建立用於存放函式的資料夾,而在django中對於自定義函式資料夾的名稱有嚴格的要求,即要求存放自定義模板函式的資料夾必須叫templatetags。建立模板函式py檔案,檔名可自定義,...

Django基礎 6 模板語言和自定義管道

2.今日內容 看圖 固定寫法,生成乙個註冊例項物件 register template.library register.filter 告訴django的模板語言我現在註冊乙個自定義的filter def add sb value 給任意指定的變數新增sb param value 左邊被修飾的那個變...

Django自定義模板過濾器

比如,現在通過資料採集,得到了全國3億人的生日,然後要在前端進行展示,但是,由於資料 多處,導致生日的格式各種各樣,比如 1983 02 03 2016年4月16日,這個時候如果資料採集過程當中沒有進行資料過濾,就需要有一種功能針對每一條資料的日期進行修改。這時候就需要用到過濾器了。在templat...