對(duì)于Python開(kāi)發(fā)者來(lái)說(shuō)疤估,web 開(kāi)發(fā)框架真可謂玲瑯滿(mǎn)目。然而Django, 毋庸置疑的成為最受青睞的 web 框架。通過(guò)本篇博客提岔,我來(lái)為大家講解下為什么相比 Flask、Pyramid皇钞、Tornado已日、Bottle、Diesel瓶珊、Pecan啸箫、Falcon 這些流行的 Python web 框架,Python 開(kāi)發(fā)者更傾向于選擇 Django伞芹。
在大肆宣揚(yáng)Django之前忘苛,讓我們簡(jiǎn)單了解一下web框架
Web框架是一個(gè)代碼庫(kù),使開(kāi)發(fā)人員更容易構(gòu)建動(dòng)態(tài)網(wǎng)站丑瞧、Web應(yīng)用程序和Web服務(wù)柑土。 眾所周知的是,每個(gè)網(wǎng)站都有一些通用的功能(如處理會(huì)話绊汹,數(shù)據(jù)驗(yàn)證等等)稽屏,一些您每次創(chuàng)建網(wǎng)站時(shí)都需要編寫(xiě)的功能。 這使開(kāi)發(fā)任務(wù)平淡乏味西乖。 然而狐榔,使用Web框架可以讓您每次創(chuàng)建網(wǎng)站都需要重新編寫(xiě)通用功能代碼的困境結(jié)束,從而實(shí)現(xiàn)更快的開(kāi)發(fā)获雕。 簡(jiǎn)而言之薄腻,Web框架可以簡(jiǎn)化Web開(kāi)發(fā)。
為什么Django是Python開(kāi)發(fā)者的最佳選擇
Django是一個(gè)Python編寫(xiě)的届案,高級(jí)的庵楷,MVC風(fēng)格的開(kāi)源庫(kù)。 Django也被稱(chēng)為“完美主義者的最終框架”,它最初是為新聞網(wǎng)站設(shè)計(jì)的尽纽,因?yàn)樗?b>允許開(kāi)發(fā)人員編寫(xiě)數(shù)據(jù)庫(kù)驅(qū)動(dòng)的Web應(yīng)用程序咐蚯,而無(wú)需從頭開(kāi)始編碼。
除了更快完成常見(jiàn)的Web開(kāi)發(fā)任務(wù)弄贿,Django還可以保持設(shè)計(jì)干凈且實(shí)用春锋。 Django是Python Web開(kāi)發(fā)新人的最佳選擇,因?yàn)楣俜轿臋n和教程是幾個(gè)(同類(lèi))軟件開(kāi)發(fā)框架中最好的差凹。
技術(shù)市場(chǎng)充斥著一系列網(wǎng)絡(luò)框架期奔,但Django在最受歡迎的服務(wù)器端Web框架里處于頂峰位置。設(shè)計(jì)Django背后的座右銘很簡(jiǎn)單:避免重復(fù)危尿。 Django是用Python編寫(xiě)的呐萌,因此其減少了太多中間層代碼并突出提高了效率。Django可以支持云平臺(tái)脚线,使其成為Web開(kāi)發(fā)中更受歡迎的選擇搁胆。
Django“自備軍需”(Batteries-Included)
Django基于“自備軍需”的理念,您不必使用單獨(dú)的庫(kù)來(lái)實(shí)現(xiàn)常見(jiàn)功能邮绿,例如身份驗(yàn)證渠旁,URL路由,模板系統(tǒng)船逮,對(duì)象關(guān)系映射器(ORM)和數(shù)據(jù)庫(kù)模型遷移顾腊。 如果您正在使用或曾經(jīng)用過(guò)Flask,您一定注意到了它需要調(diào)用其他庫(kù)挖胃,如Flask-Login來(lái)執(zhí)行用戶(hù)身份驗(yàn)證杂靶。 Django不是這樣。
自由的API
使用Django酱鸭,很容易根據(jù)您的模型生成Python API吗垮。 只需一個(gè)簡(jiǎn)單的命令,不需要額外的編碼就足以開(kāi)始生成API了凹髓。
獨(dú)特的管理頁(yè)面
即使在網(wǎng)站完全構(gòu)建之前烁登,您也可以從外部貢獻(xiàn)者處獲取有關(guān)信息。 這就是Django的力量蔚舀。 該框架使您能夠快速輕松地從應(yīng)用模型生成管理站點(diǎn)饵沧。
代碼設(shè)計(jì)
與大多數(shù) Web 框架相反,Django 通過(guò)使用稱(chēng)為 app 的東西赌躺,更容易地將新功能添加到產(chǎn)品中狼牺。 因此,開(kāi)發(fā)者可以感受到Django?鼓勵(lì)大家編寫(xiě)模塊化的代碼礼患。
Django對(duì)ORM的完善支持
Django的對(duì)象關(guān)系映射 (ORM)對(duì)數(shù)據(jù)庫(kù)進(jìn)行了完善的支持是钥。所以掠归,它用于查詢(xún)數(shù)據(jù)庫(kù)所需的數(shù)據(jù)時(shí),沒(méi)有處理結(jié)構(gòu)化查詢(xún)語(yǔ)言(SQL)的麻煩咏瑟。 與許多通過(guò)SQL直接在數(shù)據(jù)庫(kù)上工作的Python框架不同拂到,Django開(kāi)發(fā)人員有一個(gè)獨(dú)特的選擇來(lái)操縱相應(yīng)的Python的Model對(duì)象。 Django對(duì)于PostgreSQL码泞,MySQL,SQLite和Oracle等數(shù)據(jù)庫(kù)都能做到開(kāi)箱即用狼犯。
點(diǎn)擊此處了解使用 Django 及其 ORM 進(jìn)行數(shù)據(jù)處理的基礎(chǔ)知識(shí)余寥。
強(qiáng)大的內(nèi)置模板系統(tǒng)
基于繼承系統(tǒng),Django 的模板允許開(kāi)發(fā)人員通過(guò)非常少量的前端代碼構(gòu)建整個(gè)動(dòng)態(tài)網(wǎng)站悯森。這得益于使用其他上下文特定元素替換模板的某些元素的選項(xiàng)宋舷。 想象一下,你知道你網(wǎng)站的每個(gè)頁(yè)面都會(huì)有一個(gè)頁(yè)眉和一個(gè)頁(yè)腳瓢姻。 現(xiàn)在祝蝠,您首先需要在網(wǎng)站的基本模板中編寫(xiě)代碼。 然后幻碱,您可以從應(yīng)用程序的其他部分動(dòng)態(tài)地更改這兩個(gè)內(nèi)容之間的組件绎狭。
簡(jiǎn)單可讀的網(wǎng)址
很難正確閱讀在PHP os ASP中開(kāi)發(fā)的URL? 使用 Django褥傍,您可以創(chuàng)建簡(jiǎn)單易讀的 URL儡嘶,這對(duì)人和搜索引擎都有好處。 您也可以使用其他框架創(chuàng)建可讀 URL恍风,但沒(méi)有一個(gè)與 Django 一樣容易進(jìn)行 URL 構(gòu)造蹦狂。
快速容易的創(chuàng)建RSS和ATOM feeds
使用 Django,你可以通過(guò)創(chuàng)建一個(gè)簡(jiǎn)單的Python類(lèi)來(lái)快速創(chuàng)建 RSS 和 ATOM feeds朋贬。
在數(shù)據(jù)庫(kù)中自動(dòng)創(chuàng)建表
如果你的數(shù)據(jù)庫(kù)中缺失了某一個(gè)表凯楔,你可以通過(guò)執(zhí)行Django 的遷移命令來(lái)自動(dòng)創(chuàng)建它。
容易的數(shù)據(jù)遷移
數(shù)據(jù)遷移是 Django 中最有用的功能之一锦募。通過(guò)使用 Django 的遷移方法摆屯,你可以在短時(shí)間內(nèi)改變一個(gè)數(shù)據(jù)庫(kù)模式。同樣也容易就能跟蹤你的數(shù)據(jù)庫(kù)模式和相關(guān)的改變御滩。為數(shù)據(jù)遷移所做的命名能夠幫助你進(jìn)行版本控制鸥拧,還有很多選項(xiàng)可以用來(lái)合并版本和進(jìn)行修改。
安全性
Django非常安全削解,該框架默認(rèn)情況下可以防止 XSS?攻擊富弦、CSRF 攻擊,SQL 語(yǔ)句注入氛驮、點(diǎn)擊劫持腕柜、用戶(hù)管理、cookies、郵件標(biāo)頭注入盏缤、密碼攻擊砰蠢、目錄遍歷攻擊等等。
Django有一個(gè)非嘲ν活躍的社區(qū)台舱,有80,000個(gè)StackOverflow問(wèn)題和數(shù)不清的博客來(lái)自開(kāi)發(fā)人員和高級(jí)用戶(hù)。 有一些流行網(wǎng)站使用Django潭流,包括 Bitbucket, Pinterest, Instagram, 以及 The Onion竞惋。 Django的人氣不斷飆升,可能仍然是Python開(kāi)發(fā)人員最受歡迎的選擇灰嫉。
Django學(xué)習(xí)曲線
參考來(lái)源:http://python.jobbole.com/87986/