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

首頁 > 編程 > Python > 正文

詳解django中自定義標簽和過濾器

2020-02-16 01:47:52
字體:
來源:轉載
供稿:網友

想要實現自定義標簽和過濾器需要進行準備工作:

準備(必需)工作:

1  在某個app下創建一個名為templatetags(必需,且包名不可變)的包。假設我們在名為polls的app下創建了一個templatetags的包,并在該包下創建了一個名為mytags的文件。那么目錄結構看起來應該就像這樣:

polls/  __init__.py  models.py  templatetags/    __init__.py    mytags.py  views.py

2  settings文件中的INSTALLD_APPS內必須含有該app。接下來,我們需要確認settings文件中的INSTALLED_APPS變量中已經有了polls

INSTALLED_APPS = (  'django.contrib.admin',  'django.contrib.auth',  'django.contrib.contenttypes',  'django.contrib.sessions',  'django.contrib.messages',  'django.contrib.staticfiles',  'polls',)

3  接下來在mytags文件中寫入如下幾行

from django import templateregister = template.Library()

4  在模板中使用{% load %} 標簽裝載自定義標簽或者裝飾器

{% load mytags %}

自定義過濾器:

1  自定義過濾器實際上就是寫一個函數

2  django會將過濾器前的值傳入該函數

3  函數完成后,需要進行登記register

因為第二步django已經幫我們完成,所以我們實際上只需要自己完成第一步和第三步

實例:寫一個自動省略多余字符串的過濾器 

1  定義一個  truncate_chars  函數

# 若字符串長度大于30,則省略之后的內容,否則原樣輸出該字符串。參數value就是過濾器前的值def truncate_chars(value):  if value.__len__() > 30:    return '%s......'% value[0:30]  else:    return value

2  register該函數

# 登記register.filter('truncate_chars',truncate_chars)def truncate_chars(value):  if value.__len__() > 30:    return '%s......'% value[0:30]  else:    return value

Library.filter(name,function,is_safe=False,needs_autoescape=False,excepts_localtime=False)函數默認需要兩個參數,name是裝飾器的名稱(字符串類型),function是函數名。后面三個參數可以參考 官方文檔。 我們也可以通過裝飾器進行登記

@register.filter(name='truncate_filter')def truncate_chars(value):  if value.__len__() > 30:    return '%s......'% value[0:30]  else:    return value

如果沒有使用name參數,django默認會將函數名作為name參數的值,所以下面的代碼和上面的代碼作用相同。

@register.filterdef truncate_chars(value):  if value.__len__() > 30:    return '%s......'% value[0:30]  else:    return value

3  測試模板文件內容

{% load mytags %}<!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <title>Title</title></head><body>{{ 'alskdjasdfasdfasdffasdfasdfasdffasdffasdffasdffasdfasdffasdffalskdjasdfasdfasdffasdfasdfasdffasdffasdffasdffasdfasdffasdff'|truncate_chars }}</body></html>            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 许昌县| 章丘市| 砀山县| 克什克腾旗| 昆山市| 钦州市| 聂荣县| 赤水市| 禄丰县| 金川县| 武功县| 宜兴市| 科尔| 历史| 崇礼县| 九龙城区| 山东| 张家界市| 兴义市| 岑溪市| 宝应县| 麦盖提县| 竹山县| 启东市| 泸溪县| 巫溪县| 香河县| 稷山县| 勃利县| 三门县| 舟山市| 永和县| 绥德县| 武城县| 资中县| 洛宁县| 兴安县| 洛宁县| 莲花县| 宁德市| 日照市|