Django學習筆記

2021-06-16 23:03:35 字數 4460 閱讀 7536

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...