Django T 部分總結

2021-09-24 17:21:36 字數 4032 閱讀 4710

t部分指的就是django專案下的templates資料夾

是django自帶的模板系統 (template system)

它的作用是將python**和html檔案解耦合,如此也便於維護

templates資料夾檔案間存放html檔案

django的setting.py已經預設將路徑新增,所以在全域性都可以呼叫的到

其中html檔案,也就是模版的組成是:

html**+邏輯控制**

這裡主要講邏輯控制**

語法格式:}

這裡配合python**中render類方法使用

插乙個首先看怎麼用:

return render (request,html檔案的字串形式,context物件)

上面是具體實現過程:

可以看出來,template和context是兩個類,由他們例項化出兩個物件,template類物件呼叫render方法,傳入context例項化物件做引數

所以render有幾個用處:

1.render會把第二個引數(html檔案的字串形式)例項化為template物件,把第三個引數例項化為context物件,然後template類物件呼叫render方法,傳入context例項化物件做引數,得到乙個結果

2render把處理好的結果會交給httpresponse返回給客戶端,所以要有乙個request引數

語法格式: }

django 自帶的一些過濾器

此外,還可以自定製fliter過濾器方法,後面和自定製標籤一起講到

語法格式:

1.------的使用

標籤計算乙個變數值,如果是「true」,即它存在、不為空並且不是false的boolean值,系統則會顯示和間的所有內容

注:裡面可以巢狀的條件判斷和python語法一樣,多了乙個對應endif

後面的tag都參照python語法,不再贅述

2.------的使用

標籤允許你按順序遍歷乙個序列中的各個元素,每次迴圈模板系統都會渲染和之間的所有內容

3.------:csrf_token標籤

用於生成csrf_token的標籤,用於防治跨站攻擊驗證。注意如果你在view的index裡用的是render_to_response方法,不會生效

其實,這裡是會生成乙個input標籤,和其他表單標籤一起提交給後台的。

注:這個問題目前只在form表單post提交方式裡出現,

另一種解決方法是注釋掉setting.py檔案的相關功能部分

』django.middleware.csrf.csrfviewmiddleware』

4.------: 引用路由配置的位址

form表單中action屬性相關,同源情況下用別名的一種方式

eg:5.------:用更簡單的變數名替代複雜的變數名

} 6.------: 禁止render

}

------b、建立任意 .py 檔案,如:my_tags.py

from django import template

from django.utils.safestring import mark_safe

register = template.library(

)#register的名字是固定的,不可改變

@register.

filter

deffilter_multi

(v1,v2)

:return v1 * v2

@register.******_tag

def******_tag_multi

(v1,v2)

:return v1 * v2

@register.******_tag

defmy_input(id

,arg)

: result =""%

(id,arg,

)return mark_safe(result)

------c、在使用自定義******_tag和filter的html檔案中匯入之前建立的 my_tags.py :

------d、使用******_tag和filter(如何呼叫)

-------------------------------.html

#首行# num=12

} #24

} 引數不限,但不能放在if for語句中

注意區別:1.自定製filiter只能傳入第二個引數,預設第乙個是大變數

自定製tag引數不限

兩者都可以傳入大變數,注意格式,不需再加}

2.filter可以用在if等語句後,******_tag不可以

目的是為了**復用

首先在base.html要被修改的部分加上鉤子

要修改部分

理論上鉤子越多越好

其他html檔案(子模板)要用base.html(父模板)**

要首先繼承

然後在修改鉤子部分

修改後部分

這些都是用鉤子名來對應的,所以不允許在同乙個模板中定義多個同名的

還可以把父類鉤子裡的內容拿過來加以改進

} 修改後部分

html:

引入css方式:

注:在html的head部分

引入js方式:

在body部分

檔案路勁要保證django可以找得到,一般是放在"static』資料夾中

所以這裡要在setting.py中新增路徑

staticfiles_dirs=(

os.path.join(basedirs,"static")

)

並且django會自動給乙個別名:

static_url = '/static/'
————————————分隔線—————————————————

補充乙個html格式的字串的兩種渲染方式:

eg:

#後台

deftext

(request)

text=

"text">"

return render(request,

"***.html"

,)

}
瀏覽器顯示效果:""

要想正常渲染,有兩種方式:

一,後台處理:

from django.utils.safestring import mark_safe

deftext

(request)

text=

"text">"

text=mark_safe(text)

return render(request,

"***.html"

,)

二,前端處理

}
兩種方式處理之後都都正常顯示輸入框

強行不渲染參見tag使用第六條

easyUI總結部分

easyui總結部分 1 寫法 easyui可以有2種寫法。一種是直接寫標籤,方法是在標籤中加入 class easyui 型別 如class easyui tabs 另外一種寫法是現用標籤寫個簡單的input 或 div,然後在js檔案中寫 如 p panel 2 easyui 的屬性 方法 事件...

libcurl部分總結

1 對於頁面跳轉的 最好先用sniffer把http資料報全部抓下,分析協議頭,尤其是要對應好post後的url位址,以及記住cookie中的session id 情況根據各 會有所差別 2 curl easy setopt curl,curlopt post,1 使用post方式 3 curl e...

Map Set List部分總結

map 鍵值對的儲存方式,無放入順序 hashmap key可有唯一乙個為空,值可以有多個空值,執行緒不同步。hashtable key和value都不可有空值,執行緒同步。linkedhashmap 繼承自hashmap,和hashmap有相同特性,區別是linkedhashmap保留了插入時的順...