欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2017年10月17日 10:40:33   作者:_昭昭_  
這篇文章主要給大家介紹了關(guān)于Django自定義過濾器的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。

前言

本文主要給大家介紹了關(guān)于Django自定義過濾器的相關(guān)內(nèi)容,分享出來供大家參考學(xué)習(xí),下面話不多說了,來一起看看詳細(xì)的介紹:

過濾器與函數(shù)

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

django有一些內(nèi)置的過濾器,但和"新手賽車"不多(把字母轉(zhuǎn)成小寫,求數(shù)組長度,從數(shù)組中取一個隨機(jī)值),功能很基礎(chǔ)(不夠強(qiáng)大)...

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

功能是很簡單的:


過濾器

先給出我的一點體會:

在django是MVP的架構(gòu),數(shù)據(jù)模型交給Model,邏輯處理交給View,樣式模板交給temPlate,這是公認(rèn)的合理架構(gòu).

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

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

具體使用規(guī)則:

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


新建目錄

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


新建文件

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

from django.template import Library

# 將注冊類實例化為register對象
register = Library()


# 使用裝飾器注冊
@register.filter
def 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 %}


{# 顯示列表數(shù)據(jù) #}
列表的數(shù)據(jù)為:{{ my_list }}

<hr>

{# 使用自定義的過濾器get_list_max,獲得列表中最大的值 #}
列表中的最大值為:{{ my_list | get_list_max }}

</body>
</html>

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • 使用DataFrame實現(xiàn)兩表連接方式

    使用DataFrame實現(xiàn)兩表連接方式

    這篇文章主要介紹了使用DataFrame實現(xiàn)兩表連接方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • PyCharm搭建Spark開發(fā)環(huán)境實現(xiàn)第一個pyspark程序

    PyCharm搭建Spark開發(fā)環(huán)境實現(xiàn)第一個pyspark程序

    這篇文章主要介紹了PyCharm搭建Spark開發(fā)環(huán)境實現(xiàn)第一個pyspark程序,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • 分析并輸出Python代碼依賴的庫的實現(xiàn)代碼

    分析并輸出Python代碼依賴的庫的實現(xiàn)代碼

    這篇文章主要介紹了分析并輸出Python代碼依賴的庫的實現(xiàn)代碼,需要的朋友可以參考下
    2015-08-08
  • pip更新問題的解決:'python -m pip install --upgrade pip' 報錯問題(最新推薦)

    pip更新問題的解決:'python -m pip install -

    這篇文章主要介紹了pip更新問題的解決:'python -m pip install --upgrade pip' 報錯問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • python如何將mat文件轉(zhuǎn)為png

    python如何將mat文件轉(zhuǎn)為png

    這篇文章主要介紹了python如何將mat文件轉(zhuǎn)為png,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • 利用Python制作本地Excel的查詢與生成的程序問題

    利用Python制作本地Excel的查詢與生成的程序問題

    最近遇到這樣一個項目需求制作一個程序有一個簡單的查詢?nèi)肟趯崿F(xiàn)Excel的查詢與生成,今天教大家利用Python制作本地Excel的查詢與生成的程序,感興趣的朋友跟隨小編一起看看吧
    2022-06-06
  • Python實現(xiàn)識別圖片內(nèi)容的方法分析

    Python實現(xiàn)識別圖片內(nèi)容的方法分析

    這篇文章主要介紹了Python實現(xiàn)識別圖片內(nèi)容的方法,結(jié)合實例形式分析了tesseract模塊的下載、安裝配置及使用tesseract模塊進(jìn)行圖片識別的相關(guān)操作技巧,需要的朋友可以參考下
    2018-07-07
  • 在Python3中初學(xué)者應(yīng)會的一些基本的提升效率的小技巧

    在Python3中初學(xué)者應(yīng)會的一些基本的提升效率的小技巧

    這篇文章主要介紹了在Python3中的一些基本的小技巧,有利于剛剛上手Python的初學(xué)者提升開發(fā)效率,需要的朋友可以參考下
    2015-03-03
  • 如何使用OpenCV實現(xiàn)手勢音量控制

    如何使用OpenCV實現(xiàn)手勢音量控制

    今天來學(xué)習(xí)一下如何使用OpenCV實現(xiàn)手勢音量控制,本次實驗需要使用OpenCV和mediapipe庫進(jìn)行手勢識別,并利用手勢距離控制電腦音量,感興趣的朋友跟隨小編一起看看吧
    2023-11-11
  • Python中為什么要用self探討

    Python中為什么要用self探討

    這篇文章主要介紹了Python中為什么要用self探討,本文講解了Python要self的理由、為何Python給self賦值而你不必給self賦值?等內(nèi)容,需要的朋友可以參考下
    2015-04-04

最新評論