- day1 - 01 昨日內(nèi)容回顧
- day1 - 02 作業(yè)1講解
- day1 - 03 作業(yè)2講解
- day1 - 04 作業(yè)2居中效果補(bǔ)充
- day1 - 05 http協(xié)議講解
- day1 - 06 第一版基礎(chǔ)web框架
- day1 - 07 自定義web框架至動態(tài)頁面版
- day2 - 01 昨日內(nèi)容回顧2
- day2 - 02 一個(gè)簡單的爬蟲示例
- day2 - 03 進(jìn)階至wsgiref版web框架
- day2 - 04 模塊化自定義框架
- day2 - 05 通過終端指令來啟動項(xiàng)目
- day2 - 06 jinja2模板渲染簡單使用
- day2 - 07 pycharm導(dǎo)包飄紅的解決方案
- day2 - 08 django初識
- day3 - 01 昨日內(nèi)容回顧和wsgi協(xié)議
- day3 - 02 pycharm來創(chuàng)建django項(xiàng)目
- day3 - 03 django完成一個(gè)簡單web應(yīng)用示例
- day3 - 04 常用request對象屬性和簡單登錄示例
- day3 - 05 url無名分組路由和需要注意的點(diǎn)
- day3 - 06 有名分組和補(bǔ)充說明
- day3 - 07 帶默認(rèn)值參數(shù)的視圖函數(shù)
- day4 - 01 昨日內(nèi)容回顧4
- day4 - 02 request對象常用屬性和方法
- day4 - 03 reponse響應(yīng)方法
- day4 - 04 CBV和FBV的寫法
- day4 - 05 CBV源碼解析
- day4 - 06 FBV加裝飾器
- day4 - 07 CBV加裝飾器
- day4 - 08 預(yù)習(xí)內(nèi)容
- day5 - 01 昨日內(nèi)容回顧5
- day5 - 02 變量使用 萬能據(jù)點(diǎn)號
- day5 - 03 常用過濾器01
- day5 - 04 常用過濾器02
- day5 - 05 for循環(huán)標(biāo)簽
- day5 - 06 if判斷條件標(biāo)簽
- day5 - 07 with標(biāo)簽
- day5 - 08 使用標(biāo)簽的注意事項(xiàng)
- day5 - 09 自定義過濾器
- day5 - 10 自定義標(biāo)簽
- day5 - 11 模板繼承
- day6 - 01 昨日內(nèi)容回顧6
- day6 - 02 mark_safe補(bǔ)充和safe過濾做的事情一樣
- day6 - 03 靜態(tài)文件配置
- day6 - 04 模板渲染注意問題
- day6 - 05 orm介紹
- day6 - 06 手動創(chuàng)建app需要注意的問題
- day6 - 07 通過orm創(chuàng)建表的流程
- day6 - 08 執(zhí)行數(shù)據(jù)庫同步指令的注意問題
- day6 - 09 配置連接mysql數(shù)據(jù)庫
- day6 - 10 數(shù)據(jù)庫同步指令的執(zhí)行流程分析
- day6 - 11 內(nèi)容回顧
- day6 - 12 組件和inclusion_tag的使用
- day7 - 01 昨日內(nèi)容回顧7
- day7 - 02 各種FIeld的和FIeld中的屬性簡單介紹
- day7 - 03 添加記錄和簡單查詢的orm語法
- day7 - 04 修改和刪除
- day7 - 05 更新或者添加 和 查詢或添加
- day7 - 06 13個(gè)查詢qpi接口1
- day7 - 07 13個(gè)查詢api接口2
- day7 - 08 作業(yè)布置
- day8 - 01 昨日內(nèi)容回顧8
- day8 - 02 作業(yè)相關(guān)事宜
- day8 - 03 git倉庫來管理項(xiàng)目代碼
- day8 - 04 作業(yè)講解添加和展示書籍
- day8 - 05 distinct的使用注意事項(xiàng)
- day8 - 06 字段的choices屬性玩法
- day8 - 07 auto_now_add和auto_now參數(shù)講解
- day8 - 08 url別名和視圖中完成別名反向解析的方法
- day8 - 09 html中url別名發(fā)現(xiàn)解析和作業(yè)布置
- day8 - 10 表結(jié)構(gòu)介紹
- day8 - 11 基于雙下劃線的模糊查詢
- day8 - 12 表結(jié)構(gòu)設(shè)計(jì)
- day8 - 13 預(yù)習(xí)內(nèi)容
- day9 - 01 昨日內(nèi)容回顧9
- day9 - 02 圖書管理系統(tǒng)作業(yè)編輯功能
- day9 - 03 圖書管理的刪除功能
- day9 - 04 模型類和字段中的一些參數(shù)說明
- day9 - 05 關(guān)系記錄的添加操作
- day9 - 06 內(nèi)容回顧
- day10 - 01 昨日內(nèi)容回顧
- day10 - 02 刪除和修改
- day10 - 03 基于對象的跨表查詢
- day10 - 04 通過配置查詢原生sql語句
- day10 - 05 基于雙下劃線的跨表查詢
引言
前面提到了我們開發(fā)時(shí)選擇了Python語言和Web開發(fā)框架Django,至于選擇的理由可以參考這篇文章(傳送門: 軟件設(shè)計(jì)開發(fā)從0到1)。 無論你是一個(gè)熟練的開發(fā)者還是小白,開發(fā)過程中也總是會面臨各種各樣的問題,從版本選擇, 目錄結(jié)構(gòu)怎么設(shè)計(jì), 安全上需要注意什么, 要遵守什么開發(fā)規(guī)范等等。 好的開始是成功的一半,奠定一個(gè)好的開始,也許后面的開發(fā)會讓你事半功倍。 這篇文章里我想分享一下,我對這些問題的思考和選擇, 也許不是最佳實(shí)踐,但是希望能給你作為一個(gè)參考。
關(guān)于版本選擇
著手開發(fā)之前必須考慮的一個(gè)問題。
Python
如果是4,5年前,也許我會推薦Python2, 那時(shí)支持python3的模塊還不是很全,但是現(xiàn)在不一樣了。很多的開源庫都開始支持Python3, 另外官方預(yù)計(jì)在2020年停止支持Python2.7版本,官方在Python3引入了很多新特性,也修復(fù)之前的許多遺留問題, 所以建議在生產(chǎn)環(huán)境中使用Python3。相比Python2, Python3有一些差異化的東西,需要值得注意,當(dāng)你谷歌"Python2 vs Python3"時(shí),能搜索到很多的內(nèi)容,這里也簡單說明下,相比Python2, Python3有哪些不一樣的地方。
語法上的差異:print的用法不一樣, 整數(shù)相除的結(jié)果不一樣, 錯(cuò)誤處理語法有差異, 字符串類型str和字節(jié)類型byte不能相加, 廢除了xrange函數(shù),raise錯(cuò)誤的用法不一樣, 比較不可排序類型時(shí)會報(bào)錯(cuò),比如比較[1, 2] > 'foo'或者 [1, 2] > (1,2)等
特性改進(jìn): 列表表達(dá)式里的變量不再影響全局變量,即不泄露到全局變量的命名空間; 使用range(),zip(), filter(), map(), {字典}.keys(), {字典}.values(), {字典}.items(),返回的是可迭代對象,而不是列表;默認(rèn)字符集采用utf-8, 而不是ascii ; 引入了類型注解,標(biāo)注傳入的參數(shù)的類型等
擴(kuò)展閱讀:
Python3.6新特性官方文檔中文版 https://zhuanlan.zhihu.com/p/24550488
Python3的這些新特性很方便 https://segmentfault.com/a/1190000013066350
python2與python3字符串的區(qū)別 https://my.oschina.net/sallency/blog/1563298
The key differences between Python 2.7.x and Python 3.x with examples https://sebastianraschka.com/Articles/2014_python_2_3_key_diff.html
如果你正準(zhǔn)備學(xué)習(xí)Python3,苦于不知道有哪些可以學(xué)習(xí)的參考資料, 也許本公眾號之前寫過的一篇文章對你會有幫助(傳送門: 入門Python, 看這些資料就夠了)
Django
選擇了Django最新的版本。 當(dāng)前最新的穩(wěn)定版本是2.1. 需要注意的是Django2.0之后已經(jīng)對Python2停止了兼容,意味著你的Python版本只能選擇3(對應(yīng)Django2.版,對Python版本的要求是3.5+),否則運(yùn)行Django會報(bào)錯(cuò)。
Django2.0相比之前引入了一些新特性, 比如admin管理后臺對移動端的支持更加友好,SQLite支持外鍵約束, 安全性也做了一些改進(jìn)等。 當(dāng)然,如果你不是重度使用者,應(yīng)該也感受不到太大的差別。
Django的開發(fā)者社區(qū)很活躍, 涌現(xiàn)了很多優(yōu)秀的插件, app。 這里推薦兩個(gè)django app: xadmin(集成了很多強(qiáng)大且實(shí)用的后臺管理系統(tǒng)插件,替代django內(nèi)置的admin), django-rest-framework(基于django的restful api開發(fā)框架)
