利用 Apache 服務器搭建 Python 網站 (二)

Django 的使用

這幾天都在熟悉 Django 這個框架的使用。總的感受就是非常的方便,功能很強大。在網上查閱對 Django 這個框架的評論的時候,有一條說的是:如果你按照它(Django)的方式來使用它,那麼就會相當的方便,但是如果你的使用方式和它有衝突的話,那麼就會很難受。因此我會盡量學習和適應它的思考方式。目前來說,主要的學習資料還是它官方網站上的各種文檔,目前 Django 最新的穩定版是1.5。

Project & App
感覺應該先說一下 Django 裏面的 Project 和 App 的概念。按照我目前的理解 Project 是指整個網站,而一個 App 可以看做是一個相對獨立的功能模塊。使用 $django-admin.py startproject mysite 來創建一個項目,使用 $manage.py startapp appname 來創建一個 app。

數據庫
Django 提供多種數據庫的支持。我根據自己的情況選擇了 sqlite3,也是 Django 推薦的選擇。因爲我要建的網站數據量並不是很大,所以 sqlite3 應該足夠我使用,而且 sqlite3 現在也算是比較成熟了,以後就算是萬一需要遷移數據也不會是很麻煩的事情。需要注意的是如果是用 python3,需要一個插件才能提供對 mysql 的支持,詳見此文檔

我想任何不是專門做數據庫的程序猿都不會喜歡處理數據庫相關的東西:數據結構的設計,每個數據類型的確定,數據模型之間的關係,數據模型的更新……至少我本人不喜歡,雖然其實我對數據庫的使用是比較熟的。根據教程試用 Django 數據庫的相關功能,我和我的小夥伴們都驚呆了:太方便了。

這又要從 Django 的思想說起,Django 的想法是,按照 MVC 的結構來構建網頁。你根據說明將 Model 定義好了以後,使用 $manage.py syncdb* 就可以根據你定義的 Model 直接將數據庫建好,而使用的時候,也是使用它定義好的一些方法,將各種數據庫操作方便的封裝起來,這樣你面對的就是你的數據模型而不用去管數據庫了。我以往還是非常習慣去寫各種強大的 sql 語句,因此還是花了些時間才習慣這種方式。當然我也不太確定如果對數據庫的操作不熟悉的話,是不是接受這種方式會快一點。不過,不管怎樣,要用好這種方式,花點時間學習使用是少不了的,但回報也是很值得的。

*注意:syncdb 這個命令可以幫你生成相應的 table,但如果你修改了數據模型,那麼是不能用這個命令來處理的,有兩種選擇:一是用 flush 命令,這樣會清除所有的數據;二是通過其他手段,比如通過專門的數據庫工具。

對 URL 的處理
這個說起來簡單,但實際使用的時候小問題還是挺多的。根據 Django 的建議,一個網站的大概結構應該是這樣的:
  1. 一個入口文件 mysite/wsgi.py,所有的網頁請求都會定位到這個入口,靜態頁面也是通過這個入口,需要稍微配置一下。
  2. 媒體和文件資源放在單獨我服務器上,可以是虛擬服務器
根據上面的第一點可以知道,所有 url 請求到了這個入口以後,如何將這些請求區分開來定位到各個功能?這個就在 urls.py 文件裏面來進行配置。需要注意的是, url 的匹配主要是用正則表達式,並且配合 Django 對參數的識別的格式:(?P<param_name>match_param)。

總的經驗就是:多參考一下 Django 的例子,在配置的時候如果有相應的說明要仔細讀,多嘗試。

HttpRequest & HttpResponse
做網站還有一點會重要的就是對瀏覽器提交的數據進行處理,瀏覽器提交數據主要是 GET,POST 兩種方式,而如何取得其中的參數也是很重要的。而 HttpResponse 我們通常不需要太過關心,因爲 Django 已經處理了各種常規的情況,但有些時候還是需要我們手動來處理的。具體的使用請參考此文檔

Python 命令模式
接下來不得不說的就是 Python 的命令模式了,編程少不了的就是各種想法各種嘗試,而 Python 的命令模式讓這種嘗試變的非常的方便。其他很多語言要想嘗試某一種想法,都少不了要專門寫的個例子,或至少要改了代碼,然後加上適當的 log,然後編譯運行,然後分析 log…… Python的命令模式將這種過程大大的簡化了,用起來非常的舒服。配合 Django 的使用,需要使用 $python manage.py shell 來進入命令模式,這樣它可以將很多當前網站的配置/路徑都處理好,這樣你就可以很方便的嘗試你的代碼。

小結:
目前爲止主要其實都是對 Django 框架的學習和使用,總的來說還是比較方便的。雖然會遇到還多小問題,但查查文檔,仔細想想都還是能夠處理的。隨着學習的深入,要做的事情也越來越多,目前我主要是實現功能,功能實現以後,還需要做的事:
  • Django view 的使用
  • 美化界面
  • 強化網站的安全,雖然我要做的網站對安全要求不高,但也不能太爛
  • 在適當的地方使用 ajax 提升用戶體驗
  • 在整個過程中肯定還會遇到其他不少的問題
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章