久久无码中文字幕_日韩精品无码一本二本三_久久精品呦女暗网_欧美一级夜夜爽_久久精品国产99久久99久久久

04
2020/07

django使用中遇到的小問題以及解決方案

發(fā)布時(shí)間:2020-07-04 17:32:25
發(fā)布者:神棍子
瀏覽量:
0

整理了一些在django使用中遇到的小問題以及解決方案

1:模板引入

    1)django中導(dǎo)入模板使用 文件地址要在指定的templates下如

    批注 2020-07-04 173605.jpg

     {% include  "common/head.html" %}

    2)導(dǎo)入靜態(tài)文件資源需要先聲明static

        {% load static %}

2:模板語法與前端js沖突時(shí),可在前后導(dǎo)入標(biāo)簽解決。例:

    批注 2020-07-04 173929.jpg

    {% 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使用

包圍起來,從而適和HTML的格式

    (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:

            

             ?。糹nput type="text" name="peoName" value='1'/>

              <input type="text" name="peoName" value='2'/>

             ?。糹nput type="text" name="peoName" value='3'/>

            

        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)


關(guān)鍵詞:
返回列表