第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

怎么用django寫好代碼的重要性

怎么用django寫好代碼的重要性

aluckdog 2018-11-28 02:01:35
怎么用django寫好代碼的重要性
查看完整描述

1 回答

?
jeck貓

TA貢獻(xiàn)1909條經(jīng)驗(yàn) 獲得超7個(gè)贊

Django代碼注意
1、模板標(biāo)簽里面 extend和include是沖突的,有了extend,include無法生效,原因:是底層渲染獨(dú)立機(jī)制設(shè)計(jì)導(dǎo)致。
2、#coding:utf-8 這句只有放在代碼文件第一行才能生效,放在注釋字符串后面可能會(huì)失效。
3、由于前端發(fā)展而導(dǎo)致的Post請(qǐng)求Rest化和Django原生的技術(shù)設(shè)施層簡(jiǎn)化還有事務(wù)封裝前移,由此產(chǎn)生的結(jié)果是業(yè)務(wù)層完全可以放在views里面。同事Restful化的好處就是可以把跨業(yè)務(wù)模塊調(diào)用放在前端,保證了后端模塊之間的正切
4、有用戶自生成富文本內(nèi)容的頁面上最好不要放置帶XSRF的POST表單,前者可能會(huì)竊取后者的Token信息。
5、在template里面的==這一類比較邏輯運(yùn)算符號(hào)兩邊必須有空格,否則影響模板解析
6、form.is_valid內(nèi)部邏輯中的Clean_data處理中拋出的異常不會(huì)向外傳遞,只會(huì)變成form.is_valid()返回false.
7、Django的業(yè)務(wù)層和View層怎么切分這個(gè)問題,一個(gè)簡(jiǎn)單的方法就是給業(yè)務(wù)層傳遞什么層級(jí)的參數(shù),個(gè)人覺得傳遞驗(yàn)證過的form比較合適。
8、多級(jí)if else的兩個(gè)簡(jiǎn)化技巧:1是直接用except處理;2是該半路return的直接return掉,這樣做雖然不符合過程編程函數(shù)設(shè)計(jì)原則,但是代碼相對(duì)簡(jiǎn)潔了很多。
9、Ubuntu生產(chǎn)環(huán)境下不能Print Unicode中文,否則會(huì)導(dǎo)致error.
10、因?yàn)镈Jango的500機(jī)制和事務(wù)機(jī)制,所以Django的View層對(duì)異常處理代碼的依賴比較弱。
11、model form定義:沒有在前端頁面出現(xiàn)的字段,一定要exclude掉或者Null了,不過Null會(huì)影響默認(rèn)值,所以最好的方法是Exclude掉,否則即便blank掉,也會(huì)導(dǎo)致form存儲(chǔ)時(shí)出錯(cuò)。因?yàn)楸韱沃凶侄尾怀霈F(xiàn)會(huì)把默認(rèn)值覆蓋成Null。 比exclude更方便的定義方式是定義fields元信息,這樣model添加不用的字段不用跑來重新更新form定義
12、數(shù)據(jù)庫存時(shí)區(qū)性數(shù)據(jù)的格式化顯示一定要放在template里面用date之類的過濾器操作,如果用datetime的striftime直接格式化,會(huì)導(dǎo)致時(shí)區(qū)性數(shù)據(jù)丟失,出來的時(shí)間成了格林威治時(shí)間值了,如果在代碼中strifttime處理,可以先用django.utils.timezone.localtime方法處理一下,這樣出來的時(shí)間才是正常的
13、Django調(diào)試中的一個(gè)問題:眾所周知,runserver啟動(dòng),改動(dòng)代碼,服務(wù)會(huì)重啟,但是改動(dòng)自定義標(biāo)簽代碼,服務(wù)是不會(huì)重啟的。
14、form驗(yàn)證的errors在比較舊的版本里面是沒有文本信息,前一段時(shí)間看文檔,發(fā)現(xiàn)新版本有對(duì)errors有所加強(qiáng),比較好用的比如as_json()和as_text(),兩個(gè)方法,我在比較舊的版本中是自己寫個(gè)函數(shù)對(duì)errors對(duì)象做解析生成反饋文本信息。
15、ManyToMany字段的through不能add or remove,為了擴(kuò)展性的考慮,建議默認(rèn)都加上through,可以為中間關(guān)系表加個(gè)date_added字段,順便都加上unique_together約束,不過用through是有缺陷的:寫操作略麻煩。那么如果你沒加through,準(zhǔn)備改成加through的,應(yīng)該怎樣最小改動(dòng)的操作哪,應(yīng)該是先把這個(gè)ManyToMany字段刪除掉,并且migrate生效,然后再加一個(gè)有through的ManyToMany字段,當(dāng)然了后臺(tái)的數(shù)據(jù)還的備份重生效一次。這應(yīng)該算是目前Django Migration特性的一個(gè)缺陷。



查看完整回答
反對(duì) 回復(fù) 2018-12-16
  • 1 回答
  • 0 關(guān)注
  • 580 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)