主頁 > 後端開發 > Django模板之過濾器

Django模板之過濾器

2020-09-19 06:10:48 後端開發

過濾器

過濾器用于修改變數或標簽引數的值,Django的模板語言中提供了大約六十個內置過濾器,

過濾器的語法: {{ value|filter_name:引數 }}
使用管道符"|"來應用過濾器,例如:{{ name|lower }}會將name變數應用lower過濾器之后再顯示它的值,lower在這里的作用是將文本全都變成小寫,

注意事項:

  1. 過濾器支持“鏈式”操作,即一個過濾器的輸出作為另一個過濾器的輸入,
  2. 過濾器可以接受引數,例如:{{ sss|truncatewords:30 }},這將顯示sss的前30個詞,
  3. 過濾器引數包含空格的話,必須用引號包裹起來,比如使用逗號和空格去連接一個串列中的元素,如:{{ list|join:', ' }}
  4. '|'左右沒有空格
  5. 為模版過濾器提供引數的方式是:過濾器后加個冒號,再緊跟引數,中間不能有空格,目前只能為過濾器最多提供一個引數,
default

如果一個變數是false或者為空,使用給定的默認值, 否則,使用變數的值,{{ value|default:"nothing"}},如果value沒有傳值或者值為空的話就顯示nothing

length

回傳值的長度,作用于字串和串列,{{ value|length }},回傳value的長度,如 value=https://www.cnblogs.com/wby-110/p/['a', 'b', 'c']的話,就顯示3,對于未定義的變數,過濾器回傳0,

filesizeformat

將值格式化為一個 “人類可讀的” 檔案尺寸 (例如 '13 KB', '4.1 MB', '102 bytes', 等等),例如:

{{ value|filesizeformat }}

如果 value 是 123456789,輸出將會是 117.7 MB,

slice

切片,如果 value="https://www.cnblogs.com/wby-110/p/hello world",還有其他可切片的資料型別

{{value|slice:"2:-1"}}
date

根據給定格式對一個日期變數進行格式化,如果 value=https://www.cnblogs.com/wby-110/p/datetime.datetime.now()

{{ value|date:"Y-m-d H:i:s"}}

可用的格式字串:

格式化字符 描述 示例輸出
a 'a.m.'或'p.m.' 'a.m.'
A 'AM'或'PM' 'AM'
b 月份,文字形式,3個字母,小寫, “jan”
B 未實作,
c ISO 8601格式 2008-01-02T10:30:00.000123+02:00
d 月的日子,帶前導零的2位數字, '01'到'31'
D 周幾的文字表述形式,3個字母, 'Fri'
e 時區名稱 '','GMT','-500','US/Eastern'等
E 月份,分地區,
f 時間 '1','1:30'
F 月,文字形式, 'January'
g 12小時格式,無前導零, '1'到'12'
G 24小時格式,無前導零, '0'到'23'
h 12小時格式, '01'到'12'
H 24小時格式, '00'到'23'
i 分鐘 '00'到'59'
I 夏令時間,無論是否生效, '1'或'0'
j 沒有前導零的月份的日子, '1'到'31'
l 星期幾,完整英文名 'Friday'
L 布林值是否是一個閏年, True或False
m 月,2位數字帶前導零, '01'到'12'
M 月,文字,3個字母, “Jan”
n 月無前導零, '1'到'12'
N 美聯社風格的月份縮寫, 'Jan.','Feb.','March','May'
o ISO-8601周編號 '1999'
O 與格林威治時間的差,單位小時, '+0200'
P 時間為12小時 '1 am','1:30 pm','midnight','noon','12:30 pm'>
r RFC 5322格式化日期, 'Thu, 21 Dec 2000 16:01:07 +0200'
s 秒,帶前導零的2位數字, '00'到'59'
S 一個月的英文序數后綴,2個字符, 'st','nd','rd'或'th'
t 給定月份的天數, 28 to 31
T 本機的時區, 'EST','MDT'
u 微秒, 000000 to 999999
U 自Unix Epoch以來的秒數(1970年1月1日00:00:00 UTC),
w 星期幾,數字無前導零, '0'(星期日)至'6'(星期六)
W ISO-8601周數,周數從星期一開始, 1,53
y 年份,2位數字, '99'
Y 年,4位數, '1999'
z 一年中的日子 0到365
Z 時區偏移量,單位為秒, -43200到43200
safe

將字串標記為安全,不需要轉義,Django的模板中在進行模板渲染的時候會對HTML標簽和JS等語法標簽進行自動轉義,比如如果有人給評論的時候寫了一段js代碼,這個評論一提交,js代碼就執行啦,所以瀏覽器不讓這么做,給你轉義了,但是有的時候我們不希望這些HTML元素被轉義,比如我們做一個內容管理系統,后臺添加的文章中是經過修飾的,這些修飾可能是通過一個類似于FCKeditor編輯加注了HTML修飾符的文本,如果自動轉義的話顯示的就是保護HTML標簽的源檔案,為了在Django中關閉HTML的自動轉義有兩種方式,如果是一個單獨的變數我們可以通過過濾器“|safe”的方式告訴Django這段代碼是安全的不必轉義,

{{ value|safe}}
safeseq

將safe過濾器應用于序列的每個元素, 與對序列進行其他過濾操作(例如join)一起使用時非常有用,

{{ some_list|safeseq|join:", " }}

在這種情況下,不能直接使用safe過濾器,因為它首先將變數轉換為字串,而不是使用序列的各個元素,

truncatechars**

如果字串字符多于指定的字符數量,那么會被截斷,截斷的字串將以可翻譯的省略號序列(“…”)結尾,

引數:截斷的字符數

{{ value|truncatechars:9}} 
#注意:9截斷出來的是6個字符+3個省略號,配合前端的點擊事件就能展開,
truncatewords

在一定數量的字后截斷字串,是截多少個單詞,這個以字的個數計數,而不是字符計數,

{{ value|truncatewords:2}} 
如果value是Joel is a slug, 輸出為Joel is ...

字串中的換行符將被洗掉,
cut

移除value中所有的與給出的變數相同的字串

{{ value|cut:' ' }}

如果value為'i love you',那么將輸出'iloveyou'.

join

使用字串連接串列,{{ list|join:', ' }},就像Python的str.join(list),

{{ value|join:" // " }}
如果value是串列['a', 'b', 'c'] ,輸出為`a // b // c`,
timesince

將日期格式設為自該日期起的時間(例如,“4天,6小時”),

采用一個可選引數,它是一個包含用作比較點的日期的變數,例如,如果blog_date是表示2006年6月1日午夜的日期實體,并且comment_date是2006年6月1日08:00,則以下將回傳“8 hours”:

{{ blog_date|timesince:comment_date }}

分鐘是所使用的最小單位,對于相對于比較點的未來的任何日期,將回傳“0分鐘”,

timeuntil

類似于timesince,它測量從現在開始直到給定日期或日期時間的時間,例如,如果今天是2006年6月1日,而conference_date是2006年6月29日,則{{ conference_date | timeuntil }}將回傳“4 weeks”,

可選引數是一個包含用作比較點的日期變數,如果from_date為2006年6月22日,則以下內容將回傳“1 weeks”:

{{ conference_date|timeuntil:from_date }}

Django內置過濾器總覽

可以查詢下表來總覽Django的內置過濾器:

過濾器 說明
add 加法
addslashes 添加斜杠
capfirst 首字母大寫
center 文本居中
cut 切除字符
date 日期格式化
default 設定默認值
default_if_none 為None設定默認值
dictsort 字典排序
dictsortreversed 字典反向排序
divisibleby 整除判斷
escape 轉義
escapejs 轉義js代碼
filesizeformat 檔案尺寸人性化顯示
first 第一個元素
floatformat 浮點數格式化
force_escape 強制立刻轉義
get_digit 獲取數字
iriencode 轉換IRI
join 字串列鏈接
last 最后一個
length 長度
length_is 長度等于
linebreaks 行轉換
linebreaksbr 行轉換
linenumbers 行號
ljust 左對齊
lower 小寫
make_list 分割成字串列
phone2numeric 電話號碼
pluralize 復數形式
pprint 除錯
random 隨機獲取
rjust 右對齊
safe 安全確認
safeseq 串列安全確認
slice 切片
slugify 轉換成ASCII
stringformat 字串格式化
striptags 去除HTML中的標簽
time 時間格式化
timesince 從何時開始
timeuntil 到何時多久
title 所有單詞首字母大寫
truncatechars 截斷字符
truncatechars_html 截斷字符
truncatewords 截斷單詞
truncatewords_html 截斷單詞
unordered_list 無序串列
upper 大寫
urlencode 轉義url
urlize url轉成可點擊的鏈接
urlizetrunc urlize的截斷方式
wordcount 單詞計數
wordwrap 單詞包裹
yesno 將True,False和None,映射成字串‘yes’,‘no’,‘maybe’
add

把add后的引數加給value,像這樣:

{{ value|add:"2" }}

過濾器首先會強制把兩個值轉換成Int型別, 如果強制轉換失敗, 它會試圖使用各種方式把兩個值相加,如:

{{ first|add:second }}

如果first是[1, 2, 3],second是[4, 5, 6], 將會輸出[1, 2, 3, 4, 5, 6].

addslashes

在引號前面加上斜桿,常用于在CSV中轉義字串,

{{ value|addslashes }}

如果value是"I'm using Django", 輸出將變成 "I\'m using Django",

capfirst

大寫變數的第一個字母, 如果第一個字符不是字母,該過濾器將不會生效,

{{ value|capfirst }}
center

在給定的寬度范圍內居中.

"{{ value|center:"15" }}"
default_if_none

如果(且僅當)value為None,則使用給定的默認值,

{{ value|default_if_none:"nothing" }}
dictsort

接受一個包含字典元素的串列,并回傳按引數中給出的鍵排序后的串列,

{{ value|dictsort:"name" }}

也可以做更復雜的事情,如:

books=[
    {'title''1984''author': {'name''George''age'45}},
    {'title''Timequake''author': {'name''Kurt''age'75}},
    {'title''Alice''author': {'name''Lewis''age'33}},
]

{% for book in books|dictsort:"author.age" %}
    * {{ book.title }} ({{ book.author.name }})
{% endfor %}

輸出:
* Alice (Lewis)
1984 (George)
* Timequake (Kurt)

dictsort也可以按指定索引對多維串列進行排序,必須提供整數索引,不能是字串,像這樣:

{{ value|dictsort:0 }}

如果value為:

[
    ('a', '42'),
    ('c', 'string'),
    ('b', 'foo'),
]

那么輸出將是:

[
    ('a', '42'),
    ('b', 'foo'),
    ('c', 'string'),
]
dictsortreversed

dictsort過濾器的反序功能,

divisibleby

如果value可以被引數整除,則回傳True,

{{ value|divisibleby:"3" }}
escape

轉義字串的HTML,轉義僅在字串輸出時應用,因此在鏈接的過濾器序列中escape的位置無關緊要, 如果要立即應用轉義,使用force_escape過濾器,

escapejs

轉義用于JavaScript字串的字符, 確保在使用模板生成JavaScript / JSON時避免語法錯誤,

{{ value|escapejs }}
first

回傳串列中的第一項,

{{ value|first }}
floatformat

當不使用引數時,將浮點數舍入到小數點后一位,但前提是要顯示小數部分, 像這樣:

value           模板語法                輸出
34.23234    {{ value | floatformat }}   34.2
34.00000    {{ value | floatformat }}   34

如果與數字整數引數一起使用,將數字四舍五入為小數位數:
34.00000    {{ value | floatformat:3 }} 34.000
34.26000    {{ value | floatformat:3 }} 34.260

傳遞0(零)作為引數,它將使float浮動到最接近的整數:
34.00000    {{ value | floatformat:“0” }}   34
39.56000    {{ value | floatformat:“0” }}   40

如果傳遞給floatformat的引數為負,則會將一個數字四舍五入到小數點后的位置,但前提是要顯示一個小數部分:
34.23234    {{ value | floatformat:“ - 3” }}    34.232
34.00000    {{ value | floatformat:“ - 3” }}    34
get_digit

給定一個整數,回傳所請求的數字,1表示最右邊的數字,2表示第二個最右邊的數字,以此類推,

{{ value|get_digit:"2" }}
iriencode

將IRI(國際化資源識別符號)轉換為適合包含在URL中的字串,

{{ value|iriencode }}
last

回傳串列中的最后一個專案,

{{ value|last }}
length_is

如果物件的長度等于引數值,則回傳True,否則回傳False,

{{ value|length_is:"4" }}
linebreaks

替換純文本中的換行符為標簽,

{{ value|linebreaks }}    
# 如果value是Joel\nis a slug,輸出將為Joel is a slug,
linenumbers

顯示帶行號的文本,

{{ value|linenumbers }}

如果value為:

one
two
three

輸出將是:

1. one
2. two
3. three
ljust

給定寬度下左對齊,

"{{ value|ljust:"10" }}"
lower

將字串轉換為全部小寫,

{{ value|lower }}
make_list

將物件轉換為字符的串列,對于字串,直接拆分為單個字符的串列,對于整數,在創建串列之前將引數強制轉換為unicode字串,

{{ value|make_list }}

如果value123,輸出為串列['1', '2', '3'],
phone2numeric

將電話號碼(可能包含字母)轉換為其等效數字,

{{ value|phone2numeric }}
如果value為`800-COLLECT`,輸出將為800-2655328
pluralize

如果值不是1,則回傳一個復數形式,通常在后面添加's'表示,

You have {{ num_messages }message{{ num_messages|pluralize }}.

如果num_messages是1,則輸出為You have 1 message, 如果num_messages是2,輸出為You have 2 messages

另外如果需要的不是's'后綴的話, 可以提供一個備選的引數給過濾器:

You have {{ num_walruses }} walrus{{ num_walruses|pluralize:"es" }}.

對于非一般形式的復數,可以同時指定單復數形式,用逗號隔開,例如:

You have {{ num_cherries }} cherr{{ num_cherries|pluralize:"y,ies" }}.
pprint

用于除錯的過濾器,

random

回傳給定串列中的隨機項,

{{ value|random }}
rjust

右對齊給定寬度欄位中的值,

"{{ value|rjust:"10" }}"
slugify

轉換為ASCII,空格轉換為連字符,洗掉不是字母數字,下劃線或連字符的字符,轉換為小寫,還會去除前導和尾隨空格,

{{ value|slugify }}

如果value是Joel is a slug,輸出為joel-is-a-slug

stringformat

根據引數,格式化變數,

{{ value|stringformat:"E" }}

如果value為10,輸出將為1.000000E+01,

striptags

盡可能的去除HTML中的標簽,

{{ value|striptags }}
time

根據給定的格式,格式化時間,給定格式可以是預定義的TIME_FORMAT,也可以是與date過濾器相同的自定義格式,

{{ value|time:"H:i" }}

如果value等于datetime.datetime.now(),則輸出字串01:23

time過濾器只接受格式字串中與時間相關的引數,而不是日期

timesince

將日期格式設為自該日期起的時間(例如,“4天,6小時”),

title

將所有單詞的首字母大寫,其它字母小寫,

{{ value|title }}
truncatechars_html

類似于truncatechars,但是會保留HTML標記,

{{ value|truncatechars_html:9 }}

如果value是Joel is a slug,輸出Joel i...

truncatewords_html

類似于truncatewords,但是保留HTML標記,

{{ value|truncatewords_html:2 }}

HTML內容中的換行符將保留,

unordered_list

接收一個嵌套的串列,回傳一個HTML的無序串列,

例如,如果var 包含['States', ['Kansas', ['Lawrence', 'Topeka'], 'Illinois']], 那么{{ var|unordered_list }}將回傳:

<li>States
<ul>
        <li>Kansas
        <ul>
                <li>Lawrence</li>
                <li>Topeka</li>
        </ul>
        </li>
        <li>Illinois</li>
</ul>
</li>
upper

將字串轉換為全部大寫的形式:

{{ value|upper }}
urlencode

轉義要在URL中使用的值,

{{ value|urlencode }}

如果value為https://www.example.org/foo?a=b&c=d,輸出https%3A//www.example.org/foo%3Fa%3Db%26c%3Dd

urlize

將文字中的網址和電子郵件地址轉換為可點擊的鏈接,

該模板標簽適用于前綴為http://https://的鏈接,或者www

由urlize生成的鏈接會向其中添加rel="nofollow"屬性,

{{ value|urlize }}

如果value是Check out www.djangoproject.com,輸出Check out [www.djangoproject.com](http://www.djangoproject.com)

除了超級鏈接之外,urlize也會將電子郵件地址轉換為郵件地址鏈接, 如果value是Send questions to [email protected],輸出將是Send questions to [[email protected]](mailto:[email protected])

urlizetrunc

將網址和電子郵件地址轉換為可點擊的鏈接,就像urlize,但截斷長度超過給定字符數限制的網址,

{{ value|urlizetrunc:15 }}

如果value是Check out www.djangoproject.com,將輸出Check out [www.djangopr...](http://www.djangoproject.com)'.

與urlize一樣,此過濾器應僅應用于純文本,

wordcount

回傳單詞的個數,

{{ value|wordcount }}

如果value是Joel is a slug,輸出4,

wordwrap

以指定的行長度,換行單詞,

{{ value|wordwrap:5 }}

如果value是Joel is a slug,輸出為:

Joel
is a
slug
yesno

將True,False和None,映射成字串‘yes’,‘no’,‘maybe’,

{{ value|yesno:"yeah,no,maybe" }}

國際化標簽和過濾器

Django還提供了一些模板標簽和過濾器,用以控制模板中國際化的每個方面,它們允許對翻譯,格式化和時區轉換進行粒度控制,

i18n

此標簽允許在模板中指定可翻譯文本,要啟用它,請將USE_I18N設定為True,然后加載{% load i18n %}

l10n

此標簽提供對模板的本地化控制,只需要使用{% load l10n %},通常將USE_L10N設定為True,以便本地化默認處于活動狀態,

tz

此標簽對模板中的時區進行控制, 像l10n,只需要使用{% load tz },但通常還會將USE_TZ設定為True,以便默認情況下轉換為本地時間,

靜態檔案相關

Django附帶了一些其他模板標簽,必須在INSTALLED_APPS設定中顯式啟用,并在模板中啟用{% load %}標記,

static

static標簽用于鏈接保存在STATIC_ROOT中的靜態檔案,js、css、img等都叫做靜態檔案,關于django中靜態檔案的配置,需要在settings組態檔里面寫上這寫內容:

STATIC_URL = '/static/' 

STATICFILES_DIRS = [
    os.path.join(BASE_DIR,'demo'), # 第二個引數就是專案中存放靜態檔案的檔案夾名稱
]

# STATIC_URL = '/xxx/' #別名,可以隨便寫,但是如果你改名字,并且頁面里面是通過/xxx/bootstrap.css的時候,如果這里的別名你改成了/static/的話,你前端頁面的路徑要改成/static/bootstrap.css,所以我們都是用下面的load static的方式來使用靜態檔案路徑,

目錄:別名也是一種安全機制,瀏覽器上通過除錯臺能夠看到的是別名的名字,這樣別人就不能知道你靜態檔案夾的名字了,不然別人就能通過這個檔案夾路徑進行攻擊,

前端頁面引入靜態檔案的寫法,因為別名也可能會修改,所以使用路徑的時候通過load static來找到別名,通過別名映射路徑的方式來獲取靜態檔案,

{% static %}

{% load static %}
<img src=https://www.cnblogs.com/wby-110/p/"{% static "images/hi.jpg" %}" alt="Hi!" />

參考JS檔案時使用:

{% load static %}
<script src=https://www.cnblogs.com/wby-110/p/"{% static "mytest.js" %}"></script>

某個檔案多處被用到可以存為一個變數

{% load static %}
{% static "images/hi.jpg" as myphoto %}
<img src=https://www.cnblogs.com/wby-110/p/"{{ myphoto }}"></img>

{% get_static_prefix %}:手動拼接,先獲取靜態檔案包的別名然后再拼接靜態檔案,一般不使用這個,

{% load static %}
<img src=https://www.cnblogs.com/wby-110/p/"{% get_static_prefix %}images/hi.jpg" alt="Hi!" />

或者:

{% load static %}
{% get_static_prefix as STATIC_PREFIX %}

<img src=https://www.cnblogs.com/wby-110/p/"{{ STATIC_PREFIX }}images/hi.jpg" alt="Hi!" />

還可以使用變數:

{% load static %}
<link rel="stylesheet" href=https://www.cnblogs.com/wby-110/p/"{% static user_stylesheet %}" type="text/css" media="screen" />

注意一個html檔案中寫相對路徑時需要注意的一個問題,例子:

<form action="/login/"></form>
<img src=https://www.cnblogs.com/wby-110/p/"/static/1.jpg" alt="">
等標簽需要寫路徑的地方,如果寫的是相對路徑,那么前置的/這個斜杠必須寫上,不然這個請求會拼接當前網頁的路徑來發送請求,就不能匹配我們的后端路徑了

django.contrib.humanize

一組Django模板過濾器,用于向資料添加“人性化”,更加可讀,為了提高模板系統對人類的友好性,Django在django.contrib.humanize中提供了一系列的模板過濾器,

需要把django.contrib.humanize添加到INSTALLED_APPS設定中來激活這些過濾器,然后在模板中使用{% load humanize %}標簽,就可以使用下面的過濾器了,

apnumber

對于數字1~9,回傳英文單詞,否則回傳數字本身, 這遵循了出版圖書的格式,可以傳遞整數,或者整數的字串形式,

intcomma

將整數或浮點數(或兩者的字串表示形式)轉換為每隔三位數字包含逗號的字串,

例如:45000 會變成 45,000

如果啟動了Format localization,還將遵循用戶本地國家標準,例如,在德語('de')中:450000 會變成 '450.000',

intword

將大整數(或整數的字串表示形式)轉換為友好的文本表示形式,適用于超過一百萬的數字,

例如:1200000 會變成 1.2 million,支持高達10的100次方 (Googol) 的整數,

如果啟動了Format localization,還將遵循用戶本地國家標準,例如,在德語('de')中:1200000000 會變成 '1,2 Milliarden',

naturalday

對于當天或者一天之內的日期,回傳“today”,“tomorrow”或者“yesterday”的表示形式,視情況而定,否則,使用傳進來的格式字串進行日期格式化,其它的日期,還是按照傳統的方法展示,

例如(“今天”是2007年2月17日),16 Feb 2007 會變成 yesterday,

naturaltime

對于日期時間的值,回傳一個字串來表示多少秒、分鐘或者小時之前,如果超過一天之前,則回退為使用timesince格式,如果是未來的日期時間,回傳值會自動使用合適的文字表述,

例如(“現在”是2007年2月17日16時30分0秒):

17 Feb 2007 16:30:00 會變成 now,
17 Feb 2007 13:31:29 會變成 2 hours ago,
16 Feb 2007 13:30:00 會變成 1 day, 3 hours ago,
17 Feb 2007 16:34:35 會變成 4 minutes from now,
17 Feb 2007 17:30:29 會變成 an hour from now,
18 Feb 2007 16:31:29 會變成 1 day from now,
26 Feb 2007 18:31:29 會變成 1 week, 2 days from now,
ordinal

將一個整數轉化為它的序數詞字串,例如:1 會變成 1st,

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/79375.html

標籤:Python

上一篇:模塊回圈匯入問題,區分py檔案的兩種用途,模塊的搜索路徑與查找優先級,軟體開發的目錄規范

下一篇:函式的嵌套

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • Rust中的智能指標:Box<T> Rc<T> Arc<T> Cell<T> RefCell<T> Weak

    Rust中的智能指標是什么 智能指標(smart pointers)是一類資料結構,是擁有資料所有權和額外功能的指標。是指標的進一步發展 指標(pointer)是一個包含記憶體地址的變數的通用概念。這個地址參考,或 ” 指向”(points at)一些其 他資料 。參考以 & 符號為標志并借用了他們所 ......

    uj5u.com 2023-04-20 07:24:10 more
  • Java的值傳遞和參考傳遞

    值傳遞不會改變本身,參考傳遞(如果傳遞的值需要實體化到堆里)如果發生修改了會改變本身。 1.基本資料型別都是值傳遞 package com.example.basic; public class Test { public static void main(String[] args) { int ......

    uj5u.com 2023-04-20 07:24:04 more
  • [2]SpinalHDL教程——Scala簡單入門

    第一個 Scala 程式 shell里面輸入 $ scala scala> 1 + 1 res0: Int = 2 scala> println("Hello World!") Hello World! 檔案形式 object HelloWorld { /* 這是我的第一個 Scala 程式 * 以 ......

    uj5u.com 2023-04-20 07:23:58 more
  • 理解函式指標和回呼函式

    理解 函式指標 指向函式的指標。比如: 理解函式指標的偽代碼 void (*p)(int type, char *data); // 定義一個函式指標p void func(int type, char *data); // 宣告一個函式func p = func; // 將指標p指向函式func ......

    uj5u.com 2023-04-20 07:23:52 more
  • Django筆記二十五之資料庫函式之日期函式

    本文首發于公眾號:Hunter后端 原文鏈接:Django筆記二十五之資料庫函式之日期函式 日期函式主要介紹兩個大類,Extract() 和 Trunc() Extract() 函式作用是提取日期,比如我們可以提取一個日期欄位的年份,月份,日等資料 Trunc() 的作用則是截取,比如 2022-0 ......

    uj5u.com 2023-04-20 07:23:45 more
  • 一天吃透JVM面試八股文

    什么是JVM? JVM,全稱Java Virtual Machine(Java虛擬機),是通過在實際的計算機上仿真模擬各種計算機功能來實作的。由一套位元組碼指令集、一組暫存器、一個堆疊、一個垃圾回收堆和一個存盤方法域等組成。JVM屏蔽了與作業系統平臺相關的資訊,使得Java程式只需要生成在Java虛擬機 ......

    uj5u.com 2023-04-20 07:23:31 more
  • 使用Java接入小程式訂閱訊息!

    更新完微信服務號的模板訊息之后,我又趕緊把微信小程式的訂閱訊息給實作了!之前我一直以為微信小程式也是要企業才能申請,沒想到小程式個人就能申請。 訊息推送平臺🔥推送下發【郵件】【短信】【微信服務號】【微信小程式】【企業微信】【釘釘】等訊息型別。 https://gitee.com/zhongfuch ......

    uj5u.com 2023-04-20 07:22:59 more
  • java -- 緩沖流、轉換流、序列化流

    緩沖流 緩沖流, 也叫高效流, 按照資料型別分類: 位元組緩沖流:BufferedInputStream,BufferedOutputStream 字符緩沖流:BufferedReader,BufferedWriter 緩沖流的基本原理,是在創建流物件時,會創建一個內置的默認大小的緩沖區陣列,通過緩沖 ......

    uj5u.com 2023-04-20 07:22:49 more
  • Java-SpringBoot-Range請求頭設定實作視頻分段傳輸

    老實說,人太懶了,現在基本都不喜歡寫筆記了,但是網上有關Range請求頭的文章都太水了 下面是抄的一段StackOverflow的代碼...自己大修改過的,寫的注釋挺全的,應該直接看得懂,就不解釋了 寫的不好...只是希望能給視頻網站開發的新手一點點幫助吧. 業務場景:視頻分段傳輸、視頻多段傳輸(理 ......

    uj5u.com 2023-04-20 07:22:42 more
  • Windows 10開發教程_編程入門自學教程_菜鳥教程-免費教程分享

    教程簡介 Windows 10開發入門教程 - 從簡單的步驟了解Windows 10開發,從基本到高級概念,包括簡介,UWP,第一個應用程式,商店,XAML控制元件,資料系結,XAML性能,自適應設計,自適應UI,自適應代碼,檔案管理,SQLite資料庫,應用程式到應用程式通信,應用程式本地化,應用程式 ......

    uj5u.com 2023-04-20 07:22:35 more