一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - 深入理解Django的自定義過濾器

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

2020-12-11 00:47_昭昭_ Python

這篇文章主要給大家介紹了關于Django自定義過濾器的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。

前言

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

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

過濾器與函數

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

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

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

功能是很簡單的:

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

先給出我的一點體會:

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

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

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

具體使用規則:

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

深入理解Django的自定義過濾器
新建目錄

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

深入理解Django的自定義過濾器
新建文件

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
from django.template import Library
 
# 將注冊類實例化為register對象
register = Library()
 
 
# 使用裝飾器注冊
@register.filter
def get_list_max(val):
 # val為一個列表,通過過濾器取得其中的最大值
 result = max(val)
 
 return result

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<!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>

總結

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

原文鏈接:http://www.jianshu.com/p/3f5d72929c8c

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: free性日本 | 精品一区二区三区视频 | 国产欧美日韩精品高清二区综合区 | 国产成人啪精品午夜在线观看 | 日本在线一区 | 精品国产一区二区三区久久久蜜臀 | 国产亚洲精品一区在线播 | 成年人免费观看视频网站 | 亚洲高清中文字幕一区二区三区 | 亚洲国产区男人本色在线观看欧美 | 无码11久岁箩筣 | 亚洲日本va午夜中文字幕 | 天堂资源在线8 | 精品麻豆 | 好男人资源免费播放在线观看 | a级情欲片在线观看hd | 成人国产精品一级毛片视频 | 99在线播放 | 日韩一级片在线免费观看 | 大团圆免费阅读全文 | 32pao强力打造免费高速高 | 深夜福利免费在线观看 | 久久精品中文闷骚内射 | 女子张腿让男人桶免费 | 日本一区二区三区在线 观看网站 | 亚洲精品老司机福利在线播放 | 污到湿的爽文免费阅读 | 欧美大片一区 | 大又大又粗又爽女人毛片 | 性印度freehd | 四虎免费在线观看 | 日本老师xxxxx18 | 人人澡 人人澡碰人人看软件 | 国内外精品免费视频 | 97视频免费人人观看人人 | 操破苍穹在线 | 韩国甜性涩爱免费观看 | 免费国产一级观看完整版 | 国产专区日韩精品欧美色 | 丝瓜秋葵番茄绿巨人在线观看 | 美女露尿口 |