本節課程大綱:html
-----------------------------------------------------------------------------------------------------------python
Model:jquery
-數據庫操做數據庫
-驗證小程序
Form:服務器
class LoginForm():session
email = fields.EmailField()mvc
-is_valid ->每個字段進行正則(字段內置正則) + clean_字段 -> clean(__all__) -> _post_clean函數
-cleand_data源碼分析
-error
推薦使用,耦合低
-----------------------------------------------------------------------------------------------------------
1、ModelForm
Model+Form結合體 --> 驗證+數據庫操做
結合20181010的實例,看使用ModelForm帶來的便利性
obj.save()可將單表、多對多關聯表數據一併保存
但只會保存單表數據,而不保存多對多表記錄,能夠看源碼分析其原理。
想要加入M2M表記錄,須要多執行如下一句代碼:
obj.save_m2m()
Userinfo列表編輯保存,用ModelForm的實現源碼中,注意點:
一、修改界面的數據保存,須要引用instance
Django2.0後,URL中須要引入re_path來生成一個帶有正則的url對應
頁面上也能夠自定義一些額外的字段,不須要保存到數據庫的
驗證的clean鉤子用法,和form以前講的徹底同樣。
對於ModelForm回顧:
一、能夠生成HTML標籤,標籤能夠默認排列,能夠逐個寫入
class Meta:。。。定製
二、mf=xxxModelForm(instance=Modelobj) 寫入默認值
三、能夠自定義加字段,不帶入數據庫,作驗證用等
四、各類驗證 is_valid() ->每一個字段正則、每一個字段方法、clean、Postclean
五、mf.save() =>instace = mf.save(False)
instace.save()
mf.save_m2m()
耦合度高,使用方便,但侷限性高,小程序能夠用,可能會大的程序就不要用了。
2、Ajax
Ajax全套 http://www.cnblogs.com/wupeiqi/articles/5703697.html
Python開發目錄 http://www.cnblogs.com/wupeiqi/articles/5433893.html
原生
一、利用原生XmlHTTPResponse來發送POST請求時,都要設置請求頭,必定要注意
二、原生操做對象的兼容性設置
function getXHR(){
var xhr = null;
if(XMLHttpRequest){
xhr=new XMLHttpRequest();
}
else{
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
return xhr;
}
jQuery
僞Ajax操做:
僞Ajax提交的數據獲取:
三種選擇的時機:
若是是普通數據(非文件),推薦使用順序:jQuery,XMLHttpRequest,iframe
3、文件上傳(圖片預覽)
-Form提交
-Ajax上傳
{# jquery上傳文件時,須要設置如下兩個參數#}
processData:false,
contentType:false,
-iframe上傳
三種方式實現代碼見程序20181010
文件上傳選擇時機:iframe,jQuery(FormData),XMLHttpRequest(FormData)
圖片上傳後的預覽:上傳後找到文件路徑,而後加一個‘/’,做爲可讀取位置
用Jquery動態生成載入一個img標籤顯示便可。
若是不想單獨點按鈕上傳,能夠在文件input框的onchange事件中寫上傳方法。
4、圖片驗證碼 + Session
實現流程:
Get請求:生成驗證碼、存放入Session
建立一張圖片給用戶返回
POST請求:提交數據,提交驗證碼,服務器將提交的數據和Session進行對比驗證
靜態文件不須要寫URL,由於Django是後臺在幫助打開讀取返回的操做。
總結:
--session
-check_code.py(依賴:Pillow;字體文件)
-刷新驗證碼:利用src屬性後面加「?」
5、富文本插件 CKEditor,UEEditor,TinyEditor,KinkEditor
-基本使用
參考筆記:http://www.cnblogs.com/wupeiqi/articles/6307554.html
-文件上傳、多文件上傳、文件空間管理
學習Kindle中各類文件上傳
--XSS攻擊(過濾的函數)
關於跨表操做的性能提高方式:
1 Queryset.selectedrelated 直接跨表到關聯表,讀全部記錄
2 Queryset.prefishrelated 兩次跨表,第一次找__ID字段值,第二次跨表查 in __ID字段值的記錄,放入內存,以提升效率
做業:
主站:
http://127.0.0.1:8000 博客首頁
http://127.0.0.1:8000/xxx/1.html 某人的某篇文章
我的博客:
http://127.0.0.1/xxx/ 某人的博客
http://127.0.0.1/xxx/tag/python.html 某人的博客分類
http://127.0.0.1/xxx/catetory/mvc.html 某人的博客分類
http://127.0.0.1/xxx/date/2011-11.html 某人的博客分類
我的後臺管理:
我的信息管理
標籤管理
分類管理
文章管理
建立
修改文章