日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Django从理论到实战(part20)--DLT常用过滤器

發布時間:2023/12/19 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Django从理论到实战(part20)--DLT常用过滤器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

學習筆記,僅供參考

參考自:Django打造大型企業官網–Huang Y;

本系列Blog以應用為主,理論基礎部分我在后端專欄的Django系列博客已經寫過了,如果有些需要補充的知識點,我會在這個系列中,盡量詳細的記錄一下。


文章目錄

      • DLT常用過濾器
        • 過濾器簡介
        • 準備工作
        • 過濾器add
        • 過濾器cut
        • 過濾器date
        • 過濾器default
        • 過濾器default_if_none
        • 過濾器first
        • 過濾器last
        • 過濾器join
        • 過濾器length
        • 過濾器lower
        • 過濾器upper
        • 過濾器random
        • 過濾器slice
        • 過濾器stringtags
        • 過濾器truncatechars
        • 過濾器truncatechars_html



DLT常用過濾器


過濾器簡介

在模版中,有時候需要對一些數據進行處理以后才能使用。在Python中我們通過函數的形式來完成,而在模版中,則是通過過濾器來實現,過濾器中是通過|來處理數據的。


準備工作


我們首先新建一個項目newwebsite2,專門學習這個知識點:

django-admin startproject newwebsite2

進入項目文件夾:

cd newwebsite2

開啟服務:

python manage.py runserver

在項目下創建模板文件夾templates,并在settings.py中設置模板文件夾的路徑:

TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates','DIRS': [os.path.join(BASE_DIR, 'templates')],'APP_DIRS': True,'OPTIONS': {'context_processors': ['django.template.context_processors.debug','django.template.context_processors.request','django.contrib.auth.context_processors.auth','django.contrib.messages.context_processors.messages',],},}, ]

過濾器add


該過濾器會將傳進來的參數添加到value上,例如:

{{ value|add:"2" }}

上面的代碼中,如果value是等于4,那么結果將是6,如果value是等于一個普通的字符串,比如abc,那么結果將是abc2,add過濾器的源代碼如下:

def add(value, arg):try:return int(value) + int(arg)except (ValueError, TypeError):try:return value + argexcept Exception:return ''
  • 舉個例子

現在,我們創建一個模板文件add_file.py:

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>小黃之家</title> </head> <body><p>{{ value1|add:value2 }}</p></body> </html>

在主urls.py文件中添加路由:

from django.contrib import admin from django.urls import path from . import viewsurlpatterns = [path('admin/', admin.site.urls),path('add/', views.add_list), ]

創建視圖函數:

from django.http import HttpResponse from django.shortcuts import renderdef add_list(request):context = {"value1":[1, 2, 3], "value2":[4, 5, 6]}return render(request, "add_file.html",context = context)

向http://127.0.0.1:8000/add/發起訪問:


過濾器cut


該過濾器會移除value中所有指定的字符串,類似于python中的replace(args,""),例如:

{{ value|cut:" " }}

上述的代碼將會移除value中所有的空格字符。


cut過濾器的源代碼如下:

def cut(value, arg):"""Remove all values of arg from the given string."""safe = isinstance(value, SafeData)value = value.replace(arg, '')if safe and arg != ';':return mark_safe(value)return value
  • 舉個例子

現在,我們創建一個模板文件cut_file.py:

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>小黃之家</title> </head> <body><p>{{ "Hello World !"|cut:" " }}</p></body> </html>

在主urls.py文件中添加路由:

urlpatterns = [path('admin/', admin.site.urls),path('add/', views.add_list),path('cut/', views.cut_list),path('my_test/', views.my_test), ]

創建視圖函數:

def cut_list(request):return render(request, "cut_file.html")

向http://127.0.0.1:8000/cut/發起訪問:


過濾器date


該過濾器將一個日期按照指定的格式,格式化成字符串,例如:

#視圖模塊中 context = {"birthday": datetime.now() }#模版文件中 {{ birthday|date:"Y/m/d" }}

上述的代碼將會輸出2020/07/04。其中Y代表的是四位數字的年份,m代表的是兩位數字的月份,d代表的是兩位數字的日。

更多時間格式化的方式,見下表:

格式字符描述示例
Y四位數字的年份2018
m兩位數字的月份01-12
n月份,1-9前面沒有0前綴1-12
d兩位數字的天01-31
j天,但是1-9前面沒有0前綴1-31
g小時,12小時格式的,1-9前面沒有0前綴1-12
h小時,12小時格式的,1-9前面有0前綴01-12
G小時,24小時格式的,1-9前面沒有0前綴1-23
H小時,24小時格式的,1-9前面有0前綴01-23
i分鐘,1-9前面有0前綴00-59
s秒,1-9前面有0前綴00-59

過濾器default


如果value被評估為False,就使用default過濾器提供的默認值,例如:

{{ value|default:"nothing" }}

如果value是等于一個空的字符串。比如"",那么以上代碼將會輸出nothing。

備注:[],"",None,{}等這些在if判斷中為False的value,在default過濾器中會被評估為False


過濾器default_if_none


如果value是None,就使用default_if_none提供的默認值,例如:

{{ value|default_if_none:"nothing" }}

如果value等于"",即空字符串,以上代碼會輸出空字符串,只有當value為None時,以上代碼才會輸出nothing。


過濾器first


該過濾器將返回列表/元組/字符串中的第一個元素,例如:

{{ value|first }}

上述代碼中,如果value為['a','b','c'],那么將返回a。


過濾器last


該過濾器將返回列表/元組/字符串中的最后一個元素,示例代碼如下:

{{ value|last }}

如果value是等于['a','b','c'],那么將返回c。


過濾器join


該過濾器類似于Python中的join函數,將列表/元組/字符串用指定的字符進行拼接,例如:

{{ value|join:"-" }}

如果value是等于['a','b','c'],那么將返回a-b-c。


過濾器length


該過濾器將獲取列表/元組/字符串/字典的長度,例如:

{{ value|length }}

如果value是等于['a','b','c'],那么將返回3;如果value為None,那么將返回0。


過濾器lower


該過濾器將value中所有的字符全部轉換成小寫,例如:

{{ value|lower }}

如果value等于Hello World,那么將輸出hello world。


過濾器upper


該過濾器類似于lower,只不過是將指定的字符串全部轉換成大寫。


過濾器random


該過濾器可以在列表/字符串/元組中隨機的選擇一個值,例如:

{{ value|random }}

如果valued等于['a','b','c'],那么Django將會在a, b, c中隨機選擇一個返回。


過濾器slice


該過濾器類似于Python中的切片操作,例如:

{{ some_list|slice:"2:" }}

以上代碼將會將some_list從2開始做切片操作。


過濾器stringtags


該過濾器會刪除字符串中所有的html標簽,例如:

{{ value|striptags }}

如果value是<strong>hello world</strong>,那么將會輸出hello world。


過濾器truncatechars


如果字符串value的長度超過了該過濾器指定的長度,那么就會進行切割,并且會拼接三個點來作為省略號,例如:

{{ value|truncatechars:5 }}

如果value等于北京歡迎您~,那么輸出的結果是北京...

這就奇怪了,為什么輸出結果不是北京歡迎您…呢?

這是因為,三個點也占了三個字符,北京+ ... 的字符長度為5,所以是北京...


當字符串vlaue的長度沒有超過該過濾器指定的長度,那么將不進行切割,例如:

{{ "馬鞍山"|truncatechars:5 }}

上述代碼的輸出結果依然是馬鞍山


過濾器truncatechars_html


該過濾器類似于truncatechars,只不過不會切割html標簽,例如:

{{ value|truncatechars:5 }}

如果value是等于<p>北京歡迎您~</p>,那么輸出的是<p>北京...</p>。

總結

以上是生活随笔為你收集整理的Django从理论到实战(part20)--DLT常用过滤器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。