Django實際站點項目開發經驗談


開發了兩個月的Django站點正式上線了,看着網站從無到有,從前端到后台,從本地開發到環境部署,一點一滴的堆砌成型,着實帶給我不小的樂趣。

Django站點介紹:

開發環境:阿里雲服務器centos6.5  + Nginx1.7 

版本: Django1.8 + Python3.4

這是一個集合訂閱內容&個人博客的Django項目。

目前項目集成:

| - 1.訂閱功能:自動訂閱虎嗅、人人都是產品經理、果殼網等60多個IT資訊網站內容,每4小時自動更新推送至網站首頁。

| - 2.個人博客:個人博客功能,包含博客分類、推薦博客、閱讀排行榜、熱門標簽板塊。

| - 3.評論功能:使用多說評論。

站點鏈接:http://www.landsblog.com

說是經驗談,其實也只是開發后的一點小小總結,即是為了不讓自己繼續犯同樣的錯誤,也是為了能給一起學習的伙伴提供些許參考,下面就我開發中遇到的一些問題做一個總結:

1.明確站點主題

這個可能是最簡單,也可能是最容易被大家所忽視的問題。

當我在剛剛制作Django網站的時候,只是單純的打算做一個博客樣式的網站:簡單的博客列表,博客詳情內容,時間歸檔,內容分類等等。代碼寫到一半,愈發覺得這樣簡單的博客沒什么太大意義,畢竟一個月100多的服務器費用,索性開發一些實用的功能。

筆者習慣一早起來瀏覽最新的資訊,苦惱的是每個APP都要瀏覽一遍,挑挑揀揀,這樣花費不少時間。因此筆者希望可以在自己的網站中自動訂閱最新的資訊,以及最新的技術。基於這點,筆者又重新開發了訂閱功能,到目前為止,已經可以訂閱60家媒體的最新資訊,並且每四小時自動更新。

但是因為博客內容和訂閱內容使用的是相同的框架,為了同步兩者的不同,修修改改,到最后實在沒辦法,以至於所有代碼推到重來。

這件事給我的教訓是:最好在網站的開發階段就擬定好網站的主題,尤其是網站的功能,不然為了不同功能之間的嵌合,將會花更多的時間去修改

2.優先設計數據庫

確定了Django站點的主題,接下來的步驟就是設計數據庫,這一點要着重強調:數據庫的設計要合理,不能想當然的設計,最好能夠以表格的形式展現出來,避免以后遺忘,也避免內容的重復。

當初在設計數據庫的時候想着全面一些,就把能想到的內容一股腦的添加上去,比如好評次數、推薦次數、分享次數,光是這一項就有許多功能重復的地方:分享就代表着推薦,也就代表着好評。這樣繁瑣的數據庫字段我到最后也沒有用上,白白浪費了數據庫空間,也使得數據庫內容臃腫不堪。最后還是忍痛重新寫了models。

這件事給我的教訓是:不要小看數據庫的設計,合理的設計能夠大大縮減開發周期,避免不必要的字段占據數據庫的空間

3.為文章設計合理的slug

通常在訪問文章的時候,我們不會用帶有中文字符的標題作為對象的主鍵,而是單獨設計一個slug字段用於內容的訪問,當文章少的時候還可以人為的編寫slug,但當每天自動生成90+的文章數,單憑一個人為每篇文章設計與文章標題相關的slug,並且保證它們不重復,就有點力不存心了。

所以,合理的設計自動生成的slug,是非常有必要的。針對我的Django站點來說,因為訂閱的文章是同一時間自動更新的,因此希望每一篇文章的slug都能夠自帶更新日期,便於我與文章的靜態文件目錄一一對應。另外一點,對於文章數量較多的情況,怎么能避免文章主鍵不會出現重復?對此我為每個文章定義了8位的字符映射碼,有生之年是很難出現重復的。最后我采用了日期+隨機碼的方式作為slug字段的內容。

這件事給我的教訓是:看似有意義的設計其實並沒有意義(slug與文章標題相關),合理方便才是最好的

4.不要到最后才將Django站點部署到開發環境中

一般情況下,我們將Django站點在本地開發完成之后,才部署到正式的開發環境中。但是我建議在Django站點建立初期,便將其部署到正式環境中,因為正式環境和本地開發環境始終存在差異,如果一味以本地環境為基准來開發Django站點,到后面你會發現部署到正式開發環境的時候,會有很多配置問題讓你感到頭疼,而且也難以發現錯誤發生在哪里。

因此,建議你每完成一個相對完整的應用的同時,便將其同步至正式開發環境中,測試其效果。

5.善用git倉庫

在版本修改的過程當中,你會很容易忘記到底修改了哪些地方,尤其是隔幾天之后繼續開發,這種感覺尤為明顯。因此,善用git進行分支管理,進度管理。不要偷懶,把每次提交的注釋寫的清楚完整一些,對后續的開發是很有幫助的。

6.不要修改開發環境中Python默認版本,用pyenv代替

說到環境布置,又讓我想到一點,就是不要隨便更改服務器的默認python版本,因為筆者用的是阿里雲的centos6.5,該環境自帶的是python2.6版本,而Django開發的最低python版本是2.7,我用的是3.4版本。最開始,我安裝了python3.4版本,並將其設為默認,但是發現阿里雲的yum命令是依賴默認的python2.6版本,遂又修改了yum的python依賴路徑,本以為沒有問題了,但在后面的開發環境中,仍然出現了很多關於Pyhton安裝版本與自帶默認版本之間不兼容的問題。

比如:Nginx的默認python版本始終為2.6,不管我怎么修改,依然無法選擇正確的python版本。最后,不得不重新將整個服務器環境重新建立一遍,用pyenv+virtualenv來控制全局的python版本,這次一切正常。不要嘗試網上教程中的修改默認pyhton版本的方法,下場真的很凄慘......

以上就是目前我能想到的Django項目開發中所能遇到的問題,如果大家感興趣,可以訪問我的站點:http://www.landsblog.com,歡迎大家在下面留言,如果有什么問題,也歡迎大家提出。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM