新聞中心
Django的admin功能號稱是django的殺手級特性(killer feature),這一說可以說是恰如其分,毫不夸張的,從我做的這個(gè)例子來看,當(dāng)我做網(wǎng)站的時(shí)候,基本上只需要關(guān)注前臺頁面的展示這部分。

成都創(chuàng)新互聯(lián)公司是網(wǎng)站建設(shè)專家,致力于互聯(lián)網(wǎng)品牌建設(shè)與網(wǎng)絡(luò)營銷,專業(yè)領(lǐng)域包括網(wǎng)站設(shè)計(jì)、成都網(wǎng)站設(shè)計(jì)、電商網(wǎng)站制作開發(fā)、重慶小程序開發(fā)、微信營銷、系統(tǒng)平臺開發(fā),與其他網(wǎng)站設(shè)計(jì)及系統(tǒng)開發(fā)公司不同,我們的整合解決方案結(jié)合了恒基網(wǎng)絡(luò)品牌建設(shè)經(jīng)驗(yàn)和互聯(lián)網(wǎng)整合營銷的理念,并將策略和執(zhí)行緊密結(jié)合,且不斷評估并優(yōu)化我們的方案,為客戶提供全方位的互聯(lián)網(wǎng)品牌整合方案!
后臺的功能基本上都自動有了,比如我做的例子是一個(gè)二手信息發(fā)布平臺,category是二手信息的類型,還有一個(gè)information類,和category是多對一的關(guān)系,那么在后臺,category和information的crud就自動生產(chǎn)了,由于category本身是一個(gè)自關(guān)聯(lián)。
所以在admin中 add category的時(shí)候,admin會根據(jù)我model的定義,自動要求選擇一個(gè)parentCategory,而在add information的頁面上,admin會要求我選擇一個(gè)category來完成對一個(gè)information的創(chuàng)建。
而以前在java中,這些工作都需要自己完成,當(dāng)然也有很多工具可以自動生產(chǎn)crud,python不過這些開源的工具基本上都是針對單個(gè)model的,而且生成的代碼需要很大修改才能真正的把功能跑起來。
最重要的一點(diǎn)是不能自動生成關(guān)聯(lián)關(guān)系的管理。當(dāng)然我也見過有公司做了基于數(shù)據(jù)庫驅(qū)動的代碼生產(chǎn)器,能生成完整可用的代碼和頁面,也包括關(guān)聯(lián)關(guān)系的處理,不過由于語言特性的區(qū)別。
在開發(fā)的時(shí)候我們還是要不停的重啟server才能顯示出效果來,雖然在技術(shù)上,為ssh實(shí)現(xiàn)這個(gè)功能并不難,但是會消耗不少時(shí)間在上面,消耗了很多時(shí)間的話,很少就有公司將其貢獻(xiàn)出來了。
所以個(gè)人認(rèn)為django在這個(gè)功能上做得還是非常不錯(cuò)的,尤其這個(gè)功能可以節(jié)省開發(fā)者很多的時(shí)間。甚至有些時(shí)候,項(xiàng)目可以雙線執(zhí)行,用戶通過admin輸入數(shù)據(jù),程序員開發(fā)前臺,這樣,前臺功能做完之后,數(shù)據(jù)也有了,基本可以測試上線了。在需要快速開發(fā)的小項(xiàng)目上,這個(gè)特性顯得尤其重要,因?yàn)閐jango產(chǎn)生得時(shí)候就是基于這個(gè)場景。
當(dāng)然有時(shí)候后臺也沒有這么簡單,不過還好,admin提供了擴(kuò)展的功能,我們可以自己寫擴(kuò)展的代碼,然后集成到admin中去,不過事實(shí)上除了能改變admin的模板,我們不能改變?nèi)魏蝍dmin的代碼。
不過我時(shí)常在想,如果admin支持代碼自動生成的功能,那豈不是很美妙,我們可以隨意的修改后臺的功能了,否則我們就需要自己寫代碼,不如在生成的代碼上擴(kuò)展方便。
要使用admin,必須打開django的權(quán)限模塊。
這里簡單介紹一下權(quán)限模塊,django自帶了一個(gè)權(quán)限模塊,這個(gè)權(quán)限模塊中的model對于熟悉權(quán)限這塊的人來說再熟悉不過了,user,group,permission,user和group多對多,group和permission多對多。
在acegi中,我們通常這樣定義,python,role,resource,這個(gè)和django中的權(quán)限是一樣的,不過在django中默認(rèn)的permission的粒度是非常的粗了,是基于model的,如果我們要更細(xì)的權(quán)限模塊,那么就需要自己擴(kuò)展了。
我們來看一下使用fastcgi的一般模式:1、WEB服務(wù)器收到客戶端的頁面請求 2、WEB服務(wù)器將這個(gè)頁面請求委派給一個(gè)FastCGI 外部進(jìn)程(WEB服務(wù)器于FastCGI之間是通過socket來連接通訊的) 3、FastCGI外部進(jìn)程得到WEB服務(wù)器委派過來的頁面請求信息后進(jìn)行處理。
并且將處理結(jié)果(動態(tài)頁面內(nèi)容)返回給WEB服務(wù)器 4、Web服務(wù)器將FastCGI返回回來的結(jié)果再轉(zhuǎn)送給客戶端瀏覽器。 對我們來說第3步是我們最需要關(guān)注的,因?yàn)榈?步的速度嚴(yán)重影響著整個(gè)性能。
由于fastcgi是基于進(jìn)程的,所以,我們要根據(jù)我們的應(yīng)用來開啟數(shù)量合適的fastcgi進(jìn)程,多開了是對資源的浪費(fèi),少開了就影響性能,這個(gè)類似我們在tomcat中開啟處理請求的thread一樣,只不過tomcat中的request handler thread在配置起來顯然更加方便,因?yàn)槲覀冎灰P(guān)注線程池中最大的可以容納的線程數(shù),最大空閑線程數(shù)等就行了。
當(dāng)前題目:探秘豐富多彩的Python開發(fā)語言
本文地址:http://www.dlmjj.cn/article/cohjjog.html


咨詢
建站咨詢
