學習Python的日子Django(2)

2021-08-20 11:43:35 字數 2975 閱讀 5841

django

簡介檢視

主要內容:urlconf、httprequest物件、httpresponse

1)檢視接受web請求並且返回web響應

2)檢視就是乙個python函式,被定義在views.py中

3)響應可以是一張網頁的html內容,乙個重定向,乙個404錯誤等等

4)在http請求中產生兩個核心物件,所在位置是,django.http:

http請求:httprequest物件

http響應:httpresponse物件

這兩個物件是由django幫我構造的

urlconf相關概述

在settings.py檔案中通過root_urlconf指定根級url的配置

urlpatterns是乙個url()例項的列表,我們把它稱為路由,它裡面的每乙個url()我們稱為路由配置

乙個url()物件包括:

正規表示式

檢視函式

可選引數

名稱name

編寫urlconf的注意:

若要從url中捕獲乙個值,需要在它周圍設定一對圓括號

不需要新增乙個前導的反斜槓,如應該寫作'test/',而不應該寫作'/test/'

每個正規表示式前面的r表示字串不轉義

請求的url被看做是乙個普通的python字串,進行匹配時不包括get或post請求的引數及網域名稱

url路由配置方式

主路由配置

所謂主路由,就是我們專案設定資料夾當中和settings.py檔案同級的那個urls.py檔案裡面的urlpatterns,無論我們的**當中有多少個路由,我們全部把這些路由寫在我們的主路由當中,我們稱為主路由配置。

子路由配置

2)、把主路由當作排程分發路由的工具,去分發子路由,在主路由當中

也就是說,如果我們不想主路由配置這個路由,可以將它分發給子路由去配置。一樣可以得到我們想要的結果。從上面我們可以有這樣乙個啟發,以後,主路由當中基本上不做url路由配置,僅僅是用來分發子路由用的。而真正的路由是在子路由當中去配置的,它們二者相互配合,就會把我們整個**的會話路由,模組化進行處理。不但結構清晰,而且維護方便。

以後,我們的路由配置全部都是使用子路由配置,不建議直接主路由配置!

路由傳參

未命名正規表示式組傳參(位置傳參)

命名正規表示式組傳參(關鍵字傳參)

我們就通過兩種傳參方式,使得檢視函式獲取到請求路徑當中所傳遞的必要資訊

url的反向解析

如果在檢視、模板中使用硬編碼的鏈結,在urlconf發生改變時,維護是一件非常麻煩的事情

檢視:使用django.core.urlresolvers.reverse()函式

模板:使用url模板標籤

檢視函式

1)本質就是乙個函式

2)檢視的引數

a、乙個httprequest例項

b、通過正規表示式組獲取的位置引數

c、通過正規表示式組獲得的關鍵字引數

3)在應用目錄下預設有views.py檔案,一般檢視都定義在這個檔案中,如果處理功能過多,可以將函式定義到不同的py檔案中;但是建議就寫在views.py裡面,如果邏輯可以區分,可以寫在乙個新的應用裡面。

httpreqeust物件說明

1)伺服器接收到http協議的請求後,會根據報文建立httprequest物件

2)檢視函式的第乙個引數是httprequest物件

3)在django.http模組中定義了httprequest物件的api

屬性1)path:乙個字串,表示請求的頁面的完整路徑,不包含網域名稱和請求引數

2)method:乙個字串,表示請求使用的http方法,常用值包括:'get'、'post'

3)encoding:乙個字串,表示提交的資料的編碼方式

a)如果為none則表示使用瀏覽器的預設設定,一般為utf-8

b)這個屬性是可寫的,可以通過修改它來修改訪問表單資料使用的編碼,接下來對屬性的任何訪問將使用新的encoding值

4)get:乙個類似於字典querydict的物件,包含get請求方式的所有引數

5)post:乙個類似於字典querydict的物件,包含post請求方式的所有引數

6)files:乙個類似於字典的物件,包含所有的上傳檔案

7)cookies:乙個標準的python字典,包含所有的cookie,鍵和值都為字串

8)session:乙個既可讀又可寫的類似於字典的物件,表示當前的會話,只有當django 啟用會話的支援時才可用,詳細內容見「狀態保持」

方法is_ajax():如果請求是通過xmlhttprequest發起的,則返回true

querydict物件說明

1)定義在django.http.querydict

2)request物件的屬性get、post都是querydict型別的物件

3)與python字典不同,querydict型別的物件用來處理同乙個鍵帶有多個值的情況。

例如:querydict物件方法

方法get()

根據鍵獲取值

1)只能獲取鍵的乙個值

2)如果乙個鍵同時擁有多個值,獲取最後乙個值

dict.get('鍵',default)

或簡寫為

dict['鍵']

方法getlist()

根據鍵獲取值

將鍵的值以列表返回,可以獲取乙個鍵的多個值

dict.getlist('鍵',default)

get屬性

1)querydict型別的物件

2)包含get請求方式的所有引數

3)與url請求位址中的引數對應,位於?後面

4)引數的格式是鍵值對,如key1=value1

5)多個引數之間,使用&連線,如key1=value1&key2=value2

鍵是開發人員定下來的,值是可變的。

post屬性

1)querydict型別的物件

2)包含post請求方式的所有引數

3)與form表單中的控制項對應

學習Python的日子 Python(1)

第一天學習,沒有學太多的編碼語言,就簡單學習了一些格式 python 安裝軟體 sudo apt get install 軟體名 ftp 安裝ftp 登入 ftp ip 注意 mac ubuntu ftp 192.168.28.46 exit bye 互動式 python3 python print...

python標記日子 學習python的日子(一)

最開始接觸python,是用了乙個大神開發的工具條,對python十分感興趣就找了本書開始學習,沒學幾天就開始忙著找工作了,簡歷中寫著正在學習python,但是有次面試360的,受了打擊,發現自己之前懂得都太淺顯了。剛好找工作告一段落,現在開始好好學習python了。話說 head first 系列...

學習Python的日子 爬蟲(3)

要求 1 楊老師的資訊 儲存的名字叫 其他老師類似 並且都儲存到當前目錄下的 image 目錄2 楊老師的資訊儲存檔案名叫 ygf.txt 其他老師類似 並且儲存到當前目錄下的 text 目錄import re,os import requests def teacher tuple url url...