課程目錄

引言

  前面提到了我們開(kāi)發(fā)時(shí)選擇了Python語(yǔ)言和Web開(kāi)發(fā)框架Django,至于選擇的理由可以參考這篇文章(傳送門(mén): 軟件設(shè)計(jì)開(kāi)發(fā)從0到1)。 無(wú)論你是一個(gè)熟練的開(kāi)發(fā)者還是小白,開(kāi)發(fā)過(guò)程中也總是會(huì)面臨各種各樣的問(wèn)題,從版本選擇, 目錄結(jié)構(gòu)怎么設(shè)計(jì), 安全上需要注意什么, 要遵守什么開(kāi)發(fā)規(guī)范等等。 好的開(kāi)始是成功的一半,奠定一個(gè)好的開(kāi)始,也許后面的開(kāi)發(fā)會(huì)讓你事半功倍。 這篇文章里我想分享一下,我對(duì)這些問(wèn)題的思考和選擇, 也許不是最佳實(shí)踐,但是希望能給你作為一個(gè)參考。 

關(guān)于版本選擇

著手開(kāi)發(fā)之前必須考慮的一個(gè)問(wèn)題。 

Python

如果是4,5年前,也許我會(huì)推薦Python2, 那時(shí)支持python3的模塊還不是很全,但是現(xiàn)在不一樣了。很多的開(kāi)源庫(kù)都開(kāi)始支持Python3, 另外官方預(yù)計(jì)在2020年停止支持Python2.7版本,官方在Python3引入了很多新特性,也修復(fù)之前的許多遺留問(wèn)題,  所以建議在生產(chǎn)環(huán)境中使用Python3。相比Python2, Python3有一些差異化的東西,需要值得注意,當(dāng)你谷歌"Python2 vs Python3"時(shí),能搜索到很多的內(nèi)容,這里也簡(jiǎn)單說(shuō)明下,相比Python2, Python3有哪些不一樣的地方。

語(yǔ)法上的差異:print的用法不一樣, 整數(shù)相除的結(jié)果不一樣, 錯(cuò)誤處理語(yǔ)法有差異, 字符串類(lèi)型str和字節(jié)類(lèi)型byte不能相加, 廢除了xrange函數(shù),raise錯(cuò)誤的用法不一樣, 比較不可排序類(lèi)型時(shí)會(huì)報(bào)錯(cuò),比如比較[1, 2] > 'foo'或者 [1, 2] > (1,2)等

特性改進(jìn): 列表表達(dá)式里的變量不再影響全局變量,即不泄露到全局變量的命名空間; 使用range(),zip(), filter(),  map(), {字典}.keys(),  {字典}.values(),  {字典}.items(),返回的是可迭代對(duì)象,而不是列表;默認(rèn)字符集采用utf-8, 而不是ascii ; 引入了類(lèi)型注解,標(biāo)注傳入的參數(shù)的類(lèi)型等

擴(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í)的參考資料, 也許本公眾號(hào)之前寫(xiě)過(guò)的一篇文章對(duì)你會(huì)有幫助(傳送門(mén): 入門(mén)Python, 看這些資料就夠了)

Django

選擇了Django最新的版本。 當(dāng)前最新的穩(wěn)定版本是2.1.  需要注意的是Django2.0之后已經(jīng)對(duì)Python2停止了兼容,意味著你的Python版本只能選擇3(對(duì)應(yīng)Django2.版,對(duì)Python版本的要求是3.5+),否則運(yùn)行Django會(huì)報(bào)錯(cuò)。 

Django2.0相比之前引入了一些新特性, 比如admin管理后臺(tái)對(duì)移動(dòng)端的支持更加友好,SQLite支持外鍵約束, 安全性也做了一些改進(jìn)等。 當(dāng)然,如果你不是重度使用者,應(yīng)該也感受不到太大的差別。 

Django的開(kāi)發(fā)者社區(qū)很活躍, 涌現(xiàn)了很多優(yōu)秀的插件, app。 這里推薦兩個(gè)django app: xadmin(集成了很多強(qiáng)大且實(shí)用的后臺(tái)管理系統(tǒng)插件,替代django內(nèi)置的admin), django-rest-framework(基于django的restful api開(kāi)發(fā)框架)

郵箱
huangbenjincv@163.com

莱西市| 车致| 泸水县| 兴城市| 安庆市| 常德市| 社会| 汽车| 洞口县| 朔州市| 饶阳县| 双鸭山市| 叙永县| 永仁县| 玉树县| 凤山县| 承德市| 大理市| 正阳县| 彩票| 油尖旺区| 东台市| 万全县| 雷波县| 色达县| 贺州市| 徐闻县| 龙门县| 土默特左旗| 三都| 贵南县| 岚皋县| 双峰县| 闽清县| 上饶县| 巴彦淖尔市| 冕宁县| 新巴尔虎右旗| 阿城市| 拜城县| 上虞市|