開發了兩個月的Django站點正式上線了,看着網站從無到有,從前端到後臺,從本地開發到環境部署,一點一滴的堆砌成型,着實帶給我不小的樂趣。前端
Django站點介紹:python
開發環境:阿里雲服務器centos6.5 + Nginx1.7 版本: Django1.8 + Python3.4 這是一個集合訂閱內容&我的博客的Django項目。 目前項目集成: | - 1.訂閱功能:自動訂閱虎嗅、人人都是產品經理、果殼網等60多個IT資訊網站內容,每4小時自動更新推送至網站首頁。 | - 2.我的博客:我的博客功能,包含博客分類、推薦博客、閱讀排行榜、熱門標籤板塊。 | - 3.評論功能:使用多說評論。
站點連接:http://www.landsblog.comgit
說是經驗談,其實也只是開發後的一點小小總結,便是爲了避免讓本身繼續犯一樣的錯誤,也是爲了能給一塊兒學習的夥伴提供些許參考,下面就我開發中遇到的一些問題作一個總結:數據庫
這個多是最簡單,也多是最容易被你們所忽視的問題。django
當我在剛剛製做Django網站的時候,只是單純的打算作一個博客樣式的網站:簡單的博客列表,博客詳情內容,時間歸檔,內容分類等等。代碼寫到一半,愈發以爲這樣簡單的博客沒什麼太大意義,畢竟一個月100多的服務器費用,索性開發一些實用的功能。centos
筆者習慣一早起來瀏覽最新的資訊,苦惱的是每一個APP都要瀏覽一遍,挑挑揀揀,這樣花費很多時間。所以筆者但願能夠在本身的網站中自動訂閱最新的資訊,以及最新的技術。基於這點,筆者又從新開發了訂閱功能,到目前爲止,已經能夠訂閱60家媒體的最新資訊,而且每四小時自動更新。服務器
可是由於博客內容和訂閱內容使用的是相同的框架,爲了同步二者的不一樣,修修改改,到最後實在沒辦法,以致於全部代碼推到重來。框架
這件事給個人教訓是:最好在網站的開發階段就擬定好網站的主題,尤爲是網站的功能,否則爲了避免同功能之間的嵌合,將會花更多的時間去修改學習
肯定了Django站點的主題,接下來的步驟就是設計數據庫,這一點要着重強調:數據庫的設計要合理,不能想固然的設計,最好可以以表格的形式展示出來,避免之後遺忘,也避免內容的重複。測試
當初在設計數據庫的時候想着全面一些,就把能想到的內容一股腦的添加上去,好比好評次數、推薦次數、分享次數,光是這一項就有許多功能重複的地方:分享就表明着推薦,也就表明着好評。這樣繁瑣的數據庫字段我到最後也沒有用上,白白浪費了數據庫空間,也使得數據庫內容臃腫不堪。最後仍是忍痛從新寫了models。
這件事給個人教訓是:不要小看數據庫的設計,合理的設計可以大大縮減開發週期,避免沒必要要的字段佔據數據庫的空間
一般在訪問文章的時候,咱們不會用帶有中文字符的標題做爲對象的主鍵,而是單獨設計一個slug字段用於內容的訪問,當文章少的時候還能夠人爲的編寫slug,但當天天自動生成90+的文章數,單憑一我的爲每篇文章設計與文章標題相關的slug,而且保證它們不重複,就有點力不存心了。
因此,合理的設計自動生成的slug,是很是有必要的。針對個人Django站點來講,由於訂閱的文章是同一時間自動更新的,所以但願每一篇文章的slug都可以自帶更新日期,便於我與文章的靜態文件目錄一一對應。另一點,對於文章數量較多的狀況,怎麼能避免文章主鍵不會出現重複?對此我爲每一個文章定義了8位的字符映射碼,有生之年是很難出現重複的。最後我採用了日期+隨機碼的方式做爲slug字段的內容。
這件事給個人教訓是:看似有意義的設計其實並無意義(slug與文章標題相關),合理方便纔是最好的
通常狀況下,咱們將Django站點在本地開發完成以後,才部署到正式的開發環境中。可是我建議在Django站點創建初期,便將其部署到正式環境中,由於正式環境和本地開發環境始終存在差別,若是一味以本地環境爲基準來開發Django站點,到後面你會發現部署到正式開發環境的時候,會有不少配置問題讓你感到頭疼,並且也難以發現錯誤發生在哪裏。
所以,建議你每完成一個相對完整的應用的同時,便將其同步至正式開發環境中,測試其效果。
在版本修改的過程中,你會很容易忘記到底修改了哪些地方,尤爲是隔幾天以後繼續開發,這種感受尤其明顯。所以,善用git進行分支管理,進度管理。不要偷懶,把每次提交的註釋寫的清楚完整一些,對後續的開發是頗有幫助的。
說到環境佈置,又讓我想到一點,就是不要隨便更改服務器的默認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,歡迎你們在下面留言,若是有什麼問題,也歡迎你們提出。