国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

深入理解Django的自定義過濾器

2020-01-04 16:36:14
字體:
來源:轉載
供稿:網友

前言

本文主要給大家介紹了關于Django自定義過濾器的相關內容,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹:

django,自定義過濾器,過濾器,date

過濾器與函數

django過濾器的本質是函數,但"函數"太多了,為了顯示自己的與眾不同,設計者們想了個名字"過濾器"...

django有一些內置的過濾器,但和"新手賽車"不多(把字母轉成小寫,求數組長度,從數組中取一個隨機值),功能很基礎(不夠強大)...

抱著一種"研究琢磨"的心態,試著自己動手寫一個過濾器:功能很簡單,求一個數組中的最大值(今天太晚了,偷個懶哈~)

功能是很簡單的:

django,自定義過濾器,過濾器,date
過濾器

先給出我的一點體會:

在django是MVP的架構,數據模型交給Model,邏輯處理交給View,樣式模板交給temPlate,這是公認的合理架構.

隨著項目規模的增大,會出現一些問題,view掌管了所有的邏輯處理,一些很基礎的邏輯功能(比如求最大值,最小值,給用戶名加個前綴)是沒必要與核心邏輯放在一起的,不僅讓代碼顯得冗余,而且也影響核心模塊的迭代維護...

所以django的設計者,決定把一些很基礎通用的邏輯模塊單獨取出,放到app目錄下的templatetags文件夾內(文件夾名字不可改,否則會django會無法識別),templatetags可以存放多個文件,每個文件可以存放多個功能相關的過濾器,使用功能相關的過濾器時,直接導入單個文件就可以一并使用相關功能,不愧是django,框架設計真的很贊!

具體使用規則:

1.如果對某個app下的網頁使用過濾器,則在對應app的根目錄下,創建名為templatetags的文件夾(這里的pad為一個獨立的app)

django,自定義過濾器,過濾器,date
新建目錄

2.在templatetags文件夾下,新建空文件__init__.py(這是python的規矩,__init__.py表示其所在的文件夾是一個可以載入的模塊,__init__文件內容可為空),新建文件my_filter.py(這個文件可以存放多個過濾器,文件名字可自定義...)

django,自定義過濾器,過濾器,date
新建文件

3.在my_filter.py中,先導入頭文件,編寫過濾器函數(這里偷個懶,直接用python的內置函數做示范),注冊過濾器(還是喜歡裝飾器);

from django.template import Library# 將注冊類實例化為register對象register = Library()# 使用裝飾器注冊@register.filterdef get_list_max(val): # val為一個列表,通過過濾器取得其中的最大值 result = max(val) return result

4.將過濾器加載到html, 使用自定義的過濾器

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>過濾器</title></head><body>{# 加載過濾器所在的文件,由于templatetags的文件名是固定的,django可以直接找到過濾器文件所在的位置 #}{% load zhao_fillter %}{# 顯示列表數據 #}列表的數據為:{{ my_list }}<hr>{# 使用自定義的過濾器get_list_max,獲得列表中最大的值 #}列表中的最大值為:{{ my_list | get_list_max }}</body></html>

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到python教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 怀仁县| 壶关县| 寻甸| 修文县| 蒙山县| 临邑县| 南部县| 江达县| 太康县| 西平县| 淳安县| 贡嘎县| 黔南| 延川县| 南投市| 土默特右旗| 沽源县| 宁津县| 武夷山市| 太保市| 华亭县| 乐亭县| 大厂| 甘孜县| 涡阳县| 鄂尔多斯市| 望都县| 宁阳县| 昭通市| 德州市| 寻甸| 红河县| 高要市| 洛扎县| 航空| 宿松县| 北川| 阳山县| 阜宁县| 焦作市| 千阳县|