Django實際站點專案開發經驗談

2022-07-03 15:36:11 字數 2072 閱讀 3105

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

django站點介紹:

開發環境:阿里雲伺服器centos6.5  + nginx1.7 

版本: django1.8 + python3.4

這是乙個集合訂閱內容&個人部落格的django專案。

目前專案整合:

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

當我在剛剛製作django**的時候,只是單純的打算做乙個部落格樣式的**:簡單的部落格列表,部落格詳情內容,時間歸檔,內容分類等等。**寫到一半,愈發覺得這樣簡單的部落格沒什麼太大意義,畢竟乙個月100多的伺服器費用,索性開發一些實用的功能。

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

確定了django站點的主題,接下來的步驟就是設計資料庫,這一點要著重強調:資料庫的設計要合理,不能想當然的設計,最好能夠以**的形式展現出來,避免以後遺忘,也避免內容的重複。

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

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

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

所以,合理的設計自動生成的slug,是非常有必要的。針對我的django站點來說,因為訂閱的文章是同一時間自動更新的,因此希望每一篇文章的slug都能夠自帶更新日期,便於我與文章的靜態檔案目錄一一對應。另外一點,對於文章數量較多的情況,怎麼能避免文章主鍵不會出現重複?對此我為每個文章定義了8位的字元對映碼,有生之年是很難出現重複的。最後我採用了日期+隨機碼的方式作為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實際開發

建立虛擬環境 python m venv 虛擬環境名 啟用虛擬環境 虛擬環境名 scripts activate 安裝django 解決安裝超時的方法 2 pip default timeout 延長的時間 install 4.利用django建立專案 django admin startobjec...

Django專案實際部署與開發環境的問題

這兩天把django開發環境裡開發的乙個小工具部署到apache上 利用mod wsgi模組 撓頭的問題多多 1.啟動工具提示print被禁止,通過設定django.wsgi檔案裡的sys.stdout sys.stderr搞定 2.配置的路徑全部需要進行調整 3.最無語的乙個問題 開發環境裡對檔案...

vue vant jq 實際專案開發

專案結構 1 html頁面 2 js 當前頁面主要邏輯 3 common.js 公共邏輯,jq寫法 過濾器 公共方法 4 component.js 公共元件 1 html頁面 index.html 2 當前頁面js邏輯 index.js new vue authlimit methods mount...