91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在Django中使用過濾器

發布時間:2021-03-24 16:25:09 來源:億速云 閱讀:157 作者:Leah 欄目:開發技術

本篇文章為大家展示了如何在Django中使用過濾器,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

Django 過濾器

過濾器描述示例
upper以大寫方式輸出{{ user.name | upper }}
add給value加上一個數值{{ user.age | add:”5” }}
addslashes單引號加上轉義號 
capfirst第一個字母大寫{{ ‘good'| capfirst }} 返回”Good”
center輸出指定長度的字符串,把變量居中{{ “abcd”| center:”50” }}
cut刪除指定字符串{{ “You are not a Englishman” | cut:”not” }}
date格式化日期 
default如果值不存在,則使用默認值代替{{ value | default:”(N/A)” }}
default_if_none如果值為None, 則使用默認值代替 
dictsort按某字段排序,變量必須是一個dictionary{% for moment in moments | dictsort:”id” %}
dictsortreversed按某字段倒序排序,變量必須是dictionary 
divisibleby判斷是否可以被數字整除{{ 224 | divisibleby:2 }} 返回 True
escape按HTML轉義,比如將”<”轉換為”&lt” 
filesizeformat增加數字的可讀性,轉換結果為13KB,89MB,3Bytes等{{ 1024 | filesizeformat }} 返回 1.0KB
first返回列表的第1個元素,變量必須是一個列表 
floatformat轉換為指定精度的小數,默認保留1位小數{{ 3.1415926 | floatformat:3 }} 返回 3.142  四舍五入
get_digit從個位數開始截取指定位置的數字{{ 123456 | get_digit:'1'}}
join用指定分隔符連接列表{{ [‘abc','45'] | join:'*' }} 返回 abc*45
length返回列表中元素的個數或字符串長度 
length_is檢查列表,字符串長度是否符合指定的值{{ ‘hello'| length_is:'3' }}
linebreaks用<p>或<br>標簽包裹變量{{ “Hi\n\nDavid”|linebreaks }} 返回<p>Hi</p><p>David</p>
linebreaksbr用<br/>標簽代替換行符 
linenumbers為變量中的每一行加上行號 
ljust輸出指定長度的字符串,變量左對齊{{‘ab'|ljust:5}}返回 ‘ab   '
lower字符串變小寫 
make_list將字符串轉換為列表 
pluralize根據數字確定是否輸出英文復數符號 
random返回列表的隨機一項 
removetags刪除字符串中指定的HTML標記{{value | removetags: “h2 h3”}}
rjust輸出指定長度的字符串,變量右對齊 
slice切片操作, 返回列表{{[3,9,1] | slice:':2'}} 返回 [3,9]
 {{ 'asdikfjhihgie' | slice:':5' }} 返回 ‘asdik'
slugify在字符串中留下減號和下劃線,其它符號刪除,空格用減號替換{{ '5-2=3and5 2=3' | slugify }} 返回 5-23and5-23
stringformat字符串格式化,語法同python 
time返回日期的時間部分 
timesince以“到現在為止過了多長時間”顯示時間變量結果可能為 45days, 3 hours
timeuntil以“從現在開始到時間變量”還有多長時間顯示時間變量 
title每個單詞首字母大寫 
truncatewords將字符串轉換為省略表達方式{{ 'This is a pen' | truncatewords:2 }}返回 This is ...
truncatewords_html同上,但保留其中的HTML標簽{{ '<p>This is a pen<;' | truncatewords:2 }}返回 <p>This is ...<;
urlencode將字符串中的特殊字符轉換為url兼容表達方式{{ ‘http://www.aaa.com/foo?a=b&b=c' | urlencode}}
urlize將變量字符串中的url由純文本變為鏈接 
wordcount返回變量字符串中的單詞數 
yesno將布爾變量轉換為字符串yes, no 或maybe{{ True | yesno }}
 {{ False | yesno }}
 {{ None | yesno }} 返回 yes no maybe

自定義過濾器:

第一步: 在app目錄下創建包 templatetags

在templatetags下創建py文件,文件名隨意,比如

自定義simple_tag, 不能在模板中使用if判斷

from django import template
from django.utils.html import format_html
import datetime

register = template.Library()

@register.simple_tag
def page_cut(current_page, loop_page):
 #分頁: 固定顯示前后5頁
 differ = abs(current_page - loop_page)
 if differ < 5:
  li = '''<li class=""><a href="?page=%s" rel="external nofollow" >%s<span class="sr-only">(current)</span></a></li>''' % (loop_page, loop_page)
  return format_html(li)
 else:
  #這里一定要返回一個空字符串,否則在前端會顯示一系列的None
  return ''

自定義過濾器函數filter

因為sample_tag不能使用if判斷,所以才有了它

最多只能有兩個參數,一個是變量值,一個是選項值

from django import template
from django.utils.html import format_html
import datetime

register = template.Library()

@register.filter
def time_color(exp_date):
 #給一個月內到期的html標簽加上class屬性
 startdate = datetime.datetime.now().date()
 enddate = startdate + datetime.timedelta(30)
 if (enddate - exp_date).days > 0 and (enddate - exp_date).days <= 30:
  td = '''<td class="%s">%s</td>''' % ('exp_date', exp_date)
  return format_html(td)
 elif (enddate - exp_date).days > 30:
  td = '''<td class="outof">%s</td>''' % (exp_date)
  return format_html(td)
 else:
  td = '''<td>%s</td>''' % (exp_date)
  return format_html(td)

第二步,html引用

在文件開頭導入

{% load my_page %}

使用

<tbody>
  {% for project in projects_list %}
  <tr>
   <td><a href="{% url 'projects_detail' project.id %}" rel="external nofollow" >{{ project.com_name }}</a></td>
   <td>{{ project.name}}</td>
   <td>{{ project.domain }}</td>
   <td>{{ project.get_status_display }}</td>
   {{ project.exp_date|time_color }}
   <td>{{ project.ftp }}</td>
  </tr>
  {% endfor %}
 </tbody>

上述內容就是如何在Django中使用過濾器,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

南昌市| 平陆县| 准格尔旗| 泰和县| 宝丰县| 玉山县| 鄂州市| 湘潭县| 涞源县| 安化县| 邳州市| 弥勒县| 南安市| 米泉市| 双辽市| 佛冈县| 霍城县| 富阳市| 南丹县| 岐山县| 汾西县| 泰安市| 商水县| 济源市| 云龙县| 安西县| 新平| 离岛区| 黄龙县| 兴隆县| 青龙| 镇远县| 洪湖市| 三门县| 牙克石市| 云林县| 吉木萨尔县| 武平县| 清水河县| 长白| 大丰市|