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保留了插入時的順...