在專案目錄下 建立個名為common的python包
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions', #
'django.contrib.messages',
'django.contrib.staticfiles',]
在common裡面建立目錄templatetages,在目錄裡面建立自定義過濾器及標籤檔案.
**注意:**templatetags這個目錄名字是固定的,而裡面的模組名是自定義的
在common_extras.py檔案中自定義cut和lower的過濾器功能
一.自定義過濾器
# cut 過濾器的功能
defmycut
(value,arg):
return value.replace(arg,'')
# 對mycut進行註冊
register.filter('mycut',mycut)
註冊自定義過濾器:
django.template
.library
.filter()
1.library.filter()方法需要兩個引數:
a. 過濾器的名稱(乙個字串物件)
b. 編譯的函式 – 乙個python函式(不要把函式名寫成字串)
2.可以把register.filter()用作裝飾器;
3.沒有宣告 name 引數,django將使用函式名作為過濾器的名字。
例子:
from django import template
register = template.library() #例項化
# 對mycut進行註冊
register.filter('mycut',mycut)
# 裝飾器 進行註冊
@register.filter
defmylower
(value):
return value.lower()
使用自定義過濾器:
#需要使用
標籤將我們的自定義模組載入進來
宣告將會載入給定模組名中的標籤/過濾器
#要寫在模板檔案第一行
二.自定義標籤1.簡單標籤django.template.library.******_tag()
2.包含標籤django.template.library.inclusion_tag()
tag()方法有兩個引數:
1. 模板標記的名稱 - 字串。 如果省略,將使用編譯函式的名稱。
2. 編譯的函式 – 乙個python函式(不要把函式名寫成字串)
與過濾器註冊一樣,也可以將其用作裝飾器。
自定義簡單標籤的例子:
1.定義乙個顯示當前時間的簡單標籤
@register.******_tag
defcurrent_time
():return datetime.datetime.now().strftime('%y年%m月%d日 %h:%m:%s')
2.簡單標籤,傳引數,,需傳入時間格式
# 簡單標籤 傳引數
@register.******_tag
defcurrent_time2
(format_string):
return datetime.datetime.now().strftime(format_string)
3.註冊標籤時使用takes_context 引數,則可以使用從上下文中傳入的引數.
# 從上下文中傳進來引數
@register.******_tag(takes_context=true)
defcurrent_time3
(context):
format_string = context.get('format_string')
return datetime.datetime.now().strftime(format_string)
3.模板中使用自定義的標籤
自定義包含標籤的例子:
1.包含標籤的功能是可以通過渲染另外乙個模板來顯示一些資料
#例如很多地方都可能會用到下面這幾行**,除了choices這個變數不一樣之外,其他的都是格式都一樣時,那麼我們就可以把這部分**封裝在乙個包含標籤中.
# music/show_tags.html
}li>
ul>
@register.inclusion_tag('music/show_tags.html')
defshow_result
(): ls = ['***','yyy','zzz']
return
2.包含標籤 模板裡面傳參
@register.inclusion_tag('music/show_tags.html')
defshow_result2
(choice):
# ls = ['***','yyy','zzz']
return
模板裡面傳參:
3.包含標籤 上下文傳參
@register.inclusion_tag('music/show_tags.html',takes_context=true)
defshow_result3
(context):
ls = context.get('ls')
return
檢視函式(通過上下文傳參的引數在這裡):
def
index5
(request):
return render(request, 'music/index5.html',
context=
)
學習筆記之自定義控制項
學習初衷 在工作實際開發過程中,原有的安卓控制項已不能滿足實際的功能需求,而且有些應用還需要一些獨特的展示效果,這時就需要自定義控制項來定製控制項去滿足我們的需求了。public class customview extends view public customview context cont...
django學習日誌之自定義使用者擴充套件
django 為我們提供了強大的使用者認證系統,並且提供了基於該系統的user模型,所以,很多時候,我們有必要對自己的user進行業務擴充套件,得到滿足我們自己業務需求的user。藉此,寫下自己的感悟。user內建屬性如下 username 使用者名稱,必需字段。30個字元或更少,包含 和 字元。f...
Django 之自定義頭部資訊
當我們使用 django 來搭建一套網頁系統,有時候我們會需要在網頁裡加入一些資訊,比如宣示版權之類的資訊,而如果在每乙個需要渲染的頁面都加上這些資訊,會比較麻煩。而在 django 裡有乙個中介軟體 middleware 可以幫助我們實現這個功能而不需要在每乙個返回的 html 頁面都手動加上。使...