django web程式設計思路
global setting
run server
check environment
start project
$django-admin.py startproject mysite
生成專案檔案
manage.py 檔案基本就是 django-admin.py 的複製,只是加多了檢查當前目錄 settings.py檔案是否存在,不存在就退出.
settings.py: 檔案當中就是把 django/conf/global_settings.py 檔案當中的資訊抽取出來,最終 django.conf.settings 模組會合併當前工程的 settings 和 global_settings 的所有設定,如果有相同的設定名稱,會以前工程的 settings 的為準,需要注意:所有的設定名稱的字母都必須全部大寫, django 只認大寫的設定,不然就視而不見.
urls.py:負責 url 的解析分配的,使用了正規表示式的方式來匹配 url,從而決定應該呼叫哪個頁面顯示函式來顯示,函式引數是什麼等等
url控制器urls.py
然後我們在修改一下 urls.py 的檔案,增加一行 (r'^$', 'views.index'),其中 r'^$'這個正規表示式就是表示匹配乙個空字串,多乙個空格都不行,因為一開始^就結束$嘛!
然後後面的'views.index'表示呼叫 views 模組的 index 函式
說明:django在檢查url模式前,移除每乙個申請的url開頭的斜槓(/)。 這意味著我們為/hello/寫url模式不用包含斜槓(/)。
另外需要注意的是,我們把hello檢視函式作為乙個物件傳遞,而不是呼叫它。 這是 python (及其它動態語言的) 的乙個重要特性: 函式是一級物件(first-class objects), 也就是說你可以像傳遞其它變數一樣傳遞它們。
另外乙個重點,正規表示式字串的開頭字母「r」。 它告訴python這是個原始字串,不需要處理裡面的反斜槓(轉義字元)
視**件views.py
views.py中定義的檢視函式至少有乙個引數,且第乙個引數必須固定是 django/http/__init__.py 當中定義的 httprequest 這個 class 的子類,至於是哪個子類就不一定了。該類函式必須返回乙個 httpresponse 型別的結果。
模板檔案template
語法說明:
} 輸出變數的取模板標籤
塊標籤}過濾器(**轉換變數輸出格式的方式,過濾器是用管道符(|)來呼叫的**),shipdate通過管道轉換哦date型別,後面定義輸出格式
一旦你建立乙個 template 物件,你可以用 context 來傳遞資料給它。 乙個context是一系列變數和它們值的集合。呼叫 template 物件 的 render() 方法並傳遞context來填充模板.
這就是使用django模板系統的基本規則: 寫模板,建立 template 物件,建立 context , 呼叫 render() 方法。
深度變數的查詢:
模板系統能夠非常簡潔地處理更加複雜的資料結構,例如list、dictionary和自定義的物件。__在 django 模板中遍歷複雜資料結構的關鍵是句點字元 (.)__。
如果標籤指定的模板沒找到,django將會在下面兩個處理方法中選擇乙個:
如果 debug 設定為 true ,你將會在 django 錯誤資訊頁面看到 templatedoesnotexist 異常。
如果 debug 設定為 false ,該標籤不會引發錯誤資訊,在標籤位置不顯示任何東西。
資料模型models.py
用於寫針對django 自帶的物件導向資料庫的資料模型的,資料模型可以通過 syncdb 命令來產生相應的物理資料庫表
start project
$python manage.py runserver 0.0.0.0:8000
訪問:http://localhost:8000/
生成應用檔案
models.py:用於寫針對django 自帶的物件導向資料庫的資料模型的,資料模型可以通過 syncdb 命令來產生相應的物理資料庫表
views.py:用於頁面顯示或者說頁面控制的
生成資料表
$python manage.py syncdb
檢視要生成的資料表資訊
$python manage.py validate
validate 命令檢查你的模型的語法和邏輯是否正確。 如果一切正常,你會看到 0 errors found 訊息。如果出 錯,請檢查你輸入的模型**。 錯誤輸出會給出非常有用的錯誤資訊來幫助你修正你的模型。
注意:
django為每個**自動新增加了乙個 id 主鍵, 你可以重新設定它。
按約定,django新增 "_id" 字尾到外來鍵欄位名。 你猜對了,這個同樣是可以自定義的。
外來鍵是用 references 語句明確定義的
django 問題解決
1.django 環境變數設定
path = $/bin;pythonpath = $
django_settings_module = mysite.settings
mysite是project name
django python shell
$python manage.py shell
進入有django配置的shell,可以不設定django環境變數 在啟動直譯器之前,它告訴django使用哪個設定檔案。
django框架的大部分子系統,包括模板系統,都依賴於配置檔案;如果django不知道使用哪個配置檔案,這些系統將不能工作。
原理:django會搜尋環境變數django_settings_module,它被設定在settings.py中,當執行manage.py中,它會自動載入settings.py
字元編碼
t.render(c)返回的值是乙個unicode物件,不是普通的python字串。 你可以通過字串前的u來區分。
在框架中,django會一直使用unicode物件而不是普通的字串。 template中不允許使用負數列表索引。 像 } 這樣的模板變數將會引發`` templatesyntaxerror``
句點查詢規則可概括為:
字典型別查詢 (比如 foo["bar"] )
屬性查詢 (比如 foo.bar )
方法呼叫 (比如 foo.bar() ) 僅在方法無需傳入引數時,其呼叫才有效。 否則,系統將會轉移到下乙個查詢型別(列表索引查詢)。
列表型別索引查詢 (比如 foo[bar] )
模板系統不會執行任何以該方式進行標記的方法。 接上面的例子,如果模板檔案裡包含了} ,物件又具有 delete() 方法,而且delete() 有alters_data=true 這個屬性,那麼在 模板載入時, delete()方法將不會被執行。 它將靜靜地錯誤退出。
處理無效變數
預設情況下,如果乙個變數不存在,模板系統會把它展示為空字串,不做任何事情來表示失敗。
模板系統不會執行任何以該方式進行標記的方法。
接上面的例子,如果模板檔案裡包含了} ,物件又具有 delete() 方法,而且delete() 有alters_data=true 這個屬性,那麼在模板載入時, delete()方法將不會被執行。 它將靜靜地錯誤退出。
django mvc
django 緊緊地遵循這種 mvc 模式,可以稱得上是一種 mvc 框架。 以下是 django 中 m、v 和 c 各自的含義:
總結一下
進來的請求轉入/hello/.
django通過在root_urlconf配置來決定根urlconf.
django在urlconf中的所有url模式中,查詢第乙個匹配/hello/的條目。
如果找到匹配,將呼叫相應的檢視函式
檢視函式返回乙個httpresponse
django轉換httpresponse為乙個適合的http response, 以web page顯示出來
django學習筆記( )
下面的都是自己學習django框架開發的過程記錄,全當做筆記了,不喜勿噴,大神求指教 環境 ubuntu14.04 django 1.8.3 python 2.7.6 ide eclipse pydev 首先先建立乙個django project 名為blog 再在blog下建立statics與te...
django學習筆記
為了學習fabric,因為fabric的示例用到了django專案,所以就快速地開始根據官網的教程,搭建了簡單的投票應用,剛走通了前幾步。我覺得django搭建 的速度實在是超級快!非常適合快速原型開發。我很喜歡的是,只要改改模型 model view controller的model 也就是核心業...
Django學習筆記
定義 django是乙個基於python的高階web開發框架,高效快速開發,高度整合,免費開源。瀏覽器響應過程 輸入url 瀏覽器向 伺服器傳送http請求 伺服器處理請求 返回http響應 html文件 瀏覽器解析展現 瀏覽器基本原理 1 本質是網路通訊 2 瀏覽器通過通訊獲取頁面的源 文件 ht...