整理了一些在django使用中遇到的小問題以及解決方案
1:模板引入
1)django中導(dǎo)入模板使用 文件地址要在指定的templates下如
{% include "common/head.html" %}
2)導(dǎo)入靜態(tài)文件資源需要先聲明static
{% load static %}
2:模板語法與前端js沖突時(shí),可在前后導(dǎo)入標(biāo)簽解決。例:
{% verbatim %}
代碼片段...
{% endverbatim %}
3:for in循環(huán)中想到得到循環(huán)次數(shù)可以使用forloop方法:
{% for i in data %}
{{forloop.counter0}}#當(dāng)前循環(huán)次數(shù) 從0開始
{{forloop.counter}}#當(dāng)前循環(huán)次數(shù) 從1開始
{{forloop.revcounter0}}#當(dāng)前循環(huán)data剩余個(gè)數(shù) 從0開始
{{forloop.revcounter}}#當(dāng)前循環(huán)data剩余個(gè)數(shù) 從1開始
{% endfor %}
4:模板中變量過濾器
(1)add 使用形式為:{{ value | add: "2"}}
意義:將value的值增加2
(2)addslashes 使用形式為:{{ value | addslashes }}
意義:在value中的引號前增加反斜線
(3)capfirst 使用形式為:{{ value | capfirst }}
意義:value的第一個(gè)字符轉(zhuǎn)化成大寫形式
(4)cut 使用形式為:{{ value | cut:arg}}, 例如,如果value是“String with spaces” arg是" "那么輸出是"Stringwithspaces"
意義:從給定value中刪除所有arg的值
(5)date 使用形式為::
(a) {{ value | date:"D d M Y" }},例如,如果value是一個(gè)datetime對象(datetime.datetime.now())那么輸出將是字符串"Wed 09 Jan 2008"
(b) {{ value | date }},這種形式?jīng)]有格式化字符串,這時(shí)候,格式化字符串會自動采用DATE_FORMAT所設(shè)置的形式。
意義:將日期格式數(shù)據(jù)按照給定的格式輸出
(6)default 使用形式:{{ value | default: "nothing" }},例如,如果value是“”,那么輸出將是nothing
意義:如果value的意義是False,那么輸出使用缺省值
(7)default_if_none 使用形式:{{ value | default_if_none:"nothing" }},例如,如果value是None,那么輸出將是nothing
意義:如果value是None,那么輸出將使用缺省值
(8)dictsort 意義:如果value的值是一個(gè)字典,那么返回值是按照關(guān)鍵字排序的結(jié)果
使用形式:{{ value | dictsort:"name"}},例如,
如果value是:
[ {‘name’: ‘zed’, ‘a(chǎn)ge’: 19},
{‘name’: ‘a(chǎn)my’, ‘a(chǎn)ge’: 22},
{‘name’: ‘joe’, ‘a(chǎn)ge’: 31},
] 那么,輸出是:
[ {‘name’: ‘a(chǎn)my’, ‘a(chǎn)ge’: 22},
{‘name’: ‘joe’, ‘a(chǎn)ge’: 31},
{‘name’: ‘zed’, ‘a(chǎn)ge’: 19},
]
(9)dictsortreversed
意義:如果value的值是一個(gè)字典,那么返回值是按照關(guān)鍵字排序的結(jié)果的反序
使用形式:與上述(8)完全相同。
(10)divisibleby
使用形式:{{ value | divisibleby:arg}},如果value是21,arg是3,那么輸出將是True
意義:如果value能夠被arg整除,那么返回值將是True
(11)escape
使用形式:{{ value | escape}}
意義:替換value中的某些字符,以適應(yīng)HTML格式,包括:
< is converted to <
> is converted to >
’(single quote) is converted to '
” (double quote) is converted to &quto;
& is converted to &
escape僅僅在輸出的時(shí)候才起作用,所以escape不能夠用在鏈?zhǔn)竭^濾器的中間, 他應(yīng)該總是最后一個(gè)過濾器,如果想在鏈?zhǔn)竭^濾器的中間使用,那么可以使用force_escape
(12)escapejs
使用形式:{{ value | escapejs }}
意義:替換value中的某些字符,以適應(yīng)JAVASCRIPT和JSON格式。
(13)filesizeformat
使用形式:{{ value | filesizeformat }}
意義:格式化value,使其成為易讀的文件大小,例如:13KB,4.1MB等。
(14)first
使用形式:{{ value | first }}
意義:返回列表中的第一個(gè)Item,例如,如果value是列表[‘a(chǎn)’,’b’,’c’],那么輸出將是’a’。
(15)floatformat
使用形式:{{ value | floatformat}}或者{{value|floatformat:arg}}, arg可以是正數(shù)也可以是負(fù)數(shù)。沒有參數(shù)的floatformat相當(dāng)于floatformat:-1
(1)如果不帶arg,那么引擎會四舍五入,同時(shí)最多只保留一位小數(shù)。
34.23234 {{ value|floatformat }}
34.2 34.00000 {{ value|floatformat }}
34 34.26000 {{ value|floatformat }} 34.3
(2)如果arg是正數(shù),那么引擎會四舍五入,同時(shí)保留arg位的小數(shù)。
34.23234 {{ value|floatformat:3 }} 34.232
34.00000 {{ value|floatformat:3 }} 34.000
34.26000 {{ value|floatformat:3 }} 34.260
(3)如果arg是負(fù)數(shù),那么引擎會四舍五入,如果有小數(shù)部分,那么保留arg位小數(shù);否則,則沒有任何小數(shù)部分。
34.23234 {{ value|floatformat:”-3” }} 34.232
34.00000 {{ value|floatformat:”-3” }} 34
34.26000 {{ value|floatformat:”-3” }} 34.26
(16)get_digit
使用形式:{{ value | get_digit:”arg”}},例如,如果value是123456789,arg是2,那么輸出是8
意義:給定一個(gè)數(shù)字,返回,請求的數(shù)字,記?。?代表最右邊的數(shù)字,如果value不是合法輸入, 那么會返回所有原有值。
(17)iriencode
使用形式:{{value | iriencode}}
意義:如果value中有非ASCII字符,那么將其進(jìn)行抓化成URL中適合的編碼,如果value已經(jīng)進(jìn)行過URLENCODE, 改操作就不會再起作用。
(18)join
使用形式:{{ value | join:”arg”}},如果value是[‘a(chǎn)’,’b’,’c’],arg是’//’那么輸出是a//b//c
意義:使用指定的字符串連接一個(gè)list,作用如同python的str.join(list)
(19)last
使用形式:{{ value | last }}
意義:返回列表中的最后一個(gè)Item
(20)length
使用形式:{{ value | length }}
意義:返回value的長度。
(21)length_is
使用形式:{{ value | length_is:”arg”}}
意義:返回True,如果value的長度等于arg的時(shí)候,例如:如果value是[‘a(chǎn)’,’b’,’c’],arg是3,那么返回True
(22)linebreaks
使用形式:{{value|linebreaks}}
意義:value中的”\n”將被
替代,并且整個(gè)value使用
(23)linebreaksbr
使用形式:{{value |linebreaksbr}}
意義:value中的”\n”將被
替代
(24)linenumbers
使用形式:{{value | linenumbers}}
意義:顯示的文本,帶有行數(shù)。
(25)ljust
使用形式:{{value | ljust}}
意義:在一個(gè)給定寬度的字段中,左對齊顯示value
(26)center
使用形式:{{value | center}}
意義:在一個(gè)給定寬度的字段中,中心對齊顯示value
(27)rjust
使用形式:{{value | rjust}}
意義:在一個(gè)給定寬度的字段中,右對齊顯示value
(28)lower
使用形式:{{value | lower}}
意義:將一個(gè)字符串轉(zhuǎn)換成小寫形式
(29)make_list
使用形式:{{value | make_list}}
意義:將value轉(zhuǎn)換成一個(gè)list,對于字符串,轉(zhuǎn)換成字符list;對于整數(shù),轉(zhuǎn)換成整數(shù)list 例如value是Joel,那么輸出將是[u’J’,u’o’,u’e’,u’l’];value是123,那么輸出將是[1,2,3]
(30)pluralize
使用形式:{{value | pluralize}},或者{{value | pluralize:”es”}},或者{{value | pluralize:”y,ies”}}
意義:如果value不是1,則返回一個(gè)復(fù)數(shù)后綴,缺省的后綴是’s’
(31)random
使用形式:{{value | random}}
意義:從給定的list中返回一個(gè)任意的Item
(32)removetags
使用形式:{{value | removetags:”tag1 tag2 tag3…”}}
意義:刪除value中tag1,tag2….的標(biāo)簽。例如,如果value是Joel a slug tags是”b span”,那么輸出將是:Joel a slug
(33)safe
使用形式:{{value | safe}}
意義:當(dāng)系統(tǒng)設(shè)置autoescaping打開的時(shí)候,該過濾器使得輸出不進(jìn)行escape轉(zhuǎn)換
(34)safeseq
與上述safe基本相同,但有一點(diǎn)不同的就是:safe是針對字符串,而safeseq是針對多個(gè)字符串組成的sequence
(35)slice
使用形式:{{some_list | slice:”:2”}}
意義:與python語法中的slice相同,:2表示第一的第二個(gè)元素
(36)slugify
使用形式:{{value | slugify}}
意義:將value轉(zhuǎn)換成小寫形式,同事刪除所有分單詞字符,并將空格變成橫線 例如:如果value是Joel is a slug,那么輸出將是joel-is-a-slug
(37)stringformat
這個(gè)不經(jīng)常用,先不說 {{ value|stringformat:”E” }} If value is 10, the output will be 1.000000E+01.
(38)striptags
使用形式:{{value | striptags}}
意義:刪除value中的所有HTML標(biāo)簽
(39)time
使用形式:{{value | time:”H:i”}}或者{{value | time}}
意義:格式化時(shí)間輸出,如果time后面沒有格式化參數(shù),那么輸出按照TIME_FORMAT中設(shè)置的進(jìn)行。(40)title轉(zhuǎn)換一個(gè)字符串成為title格式。
(41)truncatewords使用形式:{{value | truncatewords:2}}
意義:將value切成truncatewords指定的單詞數(shù)目 例如,如果value是Joel is a slug 那么輸出將是:Joel is …
(42)truncatewords_html使用形式同(41)
意義:truncation點(diǎn)之前如果某個(gè)標(biāo)簽打開了,但是沒有關(guān)閉,那么在truncation點(diǎn)會立即關(guān)閉。 因?yàn)檫@個(gè)操作的效率比truncatewords低,所有只有在value是html格式時(shí),才考慮使用。
(43)upper
轉(zhuǎn)換一個(gè)字符串為大寫形式
(44)urlencode
將一個(gè)字符串進(jìn)行URLEncode
(45)urlize
意義:將一個(gè)字符串中的URL轉(zhuǎn)化成可點(diǎn)擊的形式。
使用形式:{{ value | urlize }} 例如,如果value是Check out www.djangoproject.com,那么輸出將是: Check out www.djangoproject.com
(46)urlizetrunc
使用形式:{{ value | urlizetrunc:15}}
意義:與(45)相同,但是有一點(diǎn)不同就是現(xiàn)實(shí)的鏈接字符會被truncate成特定的長度,后面以…現(xiàn)實(shí)。
(47)wordcount
返回字符串中單詞的數(shù)目
(48)wordwrap
使用形式:{{value | wordwrap:5}}
意義:按照指定的長度包裝字符串 例如,如果value是Joel is a slug,那么輸出將會是: Joel is a slug
(49)timesince
使用形式:{{value | since:arg}}
意義:返回參數(shù)arg到value的天數(shù)和小時(shí)數(shù) 例如,如果 blog_date 是一個(gè)日期實(shí)例表示 2006-06-01 午夜, 而 comment_date 是一個(gè)日期實(shí)例表示 2006-06-01 早上8點(diǎn), 那么 {{ comment_date|timesince:blog_date }} 將返回 “8 hours”.
(50)timeuntil使用形式:{{value | timeuntil}}
意義:與(49)基本相同,一個(gè)不同點(diǎn)就是,返回的是value距離當(dāng)前日期的天數(shù)和小時(shí)數(shù)。#實(shí)例:
#value1="aBcDe"
{{ value1|upper }}
ABCDE
#value2=5
{{ value2|add:3 }}
8
#value3='he llo wo r ld'
{{ value3|cut:' ' }}
helloworld
#import datetime
#value4=datetime.datetime.now()
{{ value4|date:'Y-m-d' }}
2018-05-11
#value5=[]
{{ value5|default:'空的' }}
空的 # 如果前面的值為空,則顯示default中的內(nèi)容
#value6='跳轉(zhuǎn)'
{{ value6 }} # 前端顯示跳轉(zhuǎn) 這是一種安全機(jī)制
{% autoescape off %} # 范圍取消安全機(jī)制
{{ value6 }} # 這會顯示正常的a標(biāo)簽
{% endautoescape %}
{{ value6|safe }}
# 與上面的方法一樣,不是范圍而已
{{ value6|striptags }} 跳轉(zhuǎn) # 取消所有html標(biāo)簽
#value7='1234'
{{ value7|first }}
1 # 取第一個(gè)
{{ value7|length }}
4 # 取長度
{{ value7|slice:":-1" }}
4321 # 切片
#value8='http://www.baidu.com/?a=1&b=3'
{{ value8|urlencode }}
# value = 'CPTTTTTTTTTTTT'{{ value|truncatechars:3 }} # 那么輸出的時(shí)候,會輸出'CPT'
5:post獲取input數(shù)組
普通情況只會獲取到相同name提交的最后一個(gè),要獲取所有的話需要使用
request.POST.getlist('name名稱')
例:
template:
view:
request.POST.getlist('peoName')
['1','2','3']
6.objects中create插入字典(需要在字典前加**)
例:
create = {}
create['brand'] = concat['brand']
create['xinghao'] = concat['xinghao']
models.Vehicle.objects.create(**create)