URL相關資訊

2021-06-16 20:19:44 字數 2621 閱讀 8048

httprequest物件包含當前請求url的一些資訊:

1屬性/方法

說明舉例

request.path

除網域名稱以外的請求路徑,以正斜槓開頭

"/hello/"

request.get_host()

主機名(比如,通常所說的網域名稱)

"127.0.0.1:8000"

or"www.example.com"

request.get_full_path()

請求路徑,可能包含查詢字串

"/hello/?print=true"

request.is_secure()

如果通過https訪問,則此方法返回true, 否則返回false

true

或者 false

在view函式裡,要始終用這個屬性或方法來得到url,而不要手動輸入。 這會使得**更加靈活,以便在其它地方重用。 下面是乙個簡單的例子:

return httpresponse("welcome to the page at %s" % request.path)request.meta 是乙個python字典,包含了所有本次http請求的header資訊,比如使用者ip位址和使用者agent(通常是瀏覽器的名稱和版本號)。 注意,header資訊的完整列表取決於使用者所傳送的header資訊和伺服器端設定的header資訊。 這個字典中幾個常見的鍵值有:

注意,因為 request.meta 是乙個普通的python字典,因此當你試圖訪問乙個不存在的鍵時,會觸發乙個keyerror異常。 (http header資訊是由使用者的瀏覽器所提交的、不應該給予信任的「額外」資料,因此你總是應該好好設計你的應用以便當乙個特定的header資料不存在時,給出乙個優雅的回應。)你應該用 try/except 語句,或者用python字典的 get() 方法來處理這些「可能不存在的鍵」:2

return httpresponse("your browser is %s" % ua)我們鼓勵你動手寫乙個簡單的view函式來顯示 request.meta 的所有資料,這樣你就知道裡面有什麼了。 這個view函式可能是這樣的:

def display_meta(request):

values = request.meta.items()

values.sort()

html =

for k, v in values:

%s' % (k, v))

return httpresponse('%s' % '\n'.join(html))

做為乙個練習,看你自己能不能把上面這個view函式改用django模板系統來實現,而不是上面這樣來手動輸入html**。也可以試著把前面提到的 request.path 方法或 httprequest 物件的其它方法加進去。4

除了基本的元資料,httprequest物件還有兩個屬性包含了使用者所提交的資訊: request.get 和 request.post。二者都是類字典物件,你可以通過它們來訪問get和post資料。

1類字典物件

我們說「request.get和request.post是類字典物件」,意思是他們的行為像python裡標準的字典物件,但在技術底層上他們不是標準字典物件。 比如說,request.get和request.post都有get()、keys()和values()方法,你可以用用 for key in request.get 獲取所有的鍵。

2那到底有什麼區別呢? 因為request.get和request.post擁有一些普通的字典物件所沒有的方法。 我們會稍後講到。

1你可能以前遇到過相似的名字:類檔案物件,這些python物件有一些基本的方法,如read(),用來做真正的python檔案物件的代用品。

post資料是來自html中的〈form〉標籤提交的,而get資料可能來自〈form〉提交也可能是url中的查詢字串(the query string)。

PHP中parse url取URL相關資訊

url舉例 協議 http 使用者名稱和密碼 username password 以 將兩者分隔 主機名 hostname 和 為分隔符 路徑 path 以 開頭 包含 符號 引數鍵值對 arg value arg1 value1 和 為分隔符 每對鍵值對之間用 分隔 錨 auchor 以 開頭 用...

NodeJs 獲取url資訊

取到的值是 http localhost 8888 select?aa 001 bb 002 console.log p.protocol 取到的值是 http console.log p.hostname 取到的值是 locahost console.log p.host 取到的值是 localh...

Rails中獲取url資訊

rails中獲取url資訊的一些方法 如本機我測試網域名稱為test.blog.zool.it 3000 開啟的uri為 post hello world fullurl為 則rails的路由生成一下幾個方法 domain tld length 1 取得網域名稱 request.domain zoo...