django的url 用法總結

2021-07-15 04:48:56 字數 2874 閱讀 6472

url()函式用於將檢視函式和url關聯起來, 下面總結學習過程中對url()與檢視函式的引數對應問題

在templates/home.html:

welcome title>

head>

hellow world! p>

body>

html>

在urls.py中修改urls()

修改views.py:

在瀏覽器中輸入http://localhost:8000/a=8&b=5

頁面顯示

使用正規表示式裡的群組時,url()會自動將群組作為引數按順序傳入檢視函式中,所以上述實現過程如此:

param1 = 8, param2 = 3

home(request, param1, param2)

還可以給group 命名, 即為 named group:

此時可匹配的url為:

其餘與上述情況一致

需要注意:正規表示式裡的群組個數應該與檢視函式的除了request引數外的其他引數個數相匹配,否則會報錯

另外,使用群組來設定引數,理論上可以設定多個引數,但是這種方法很容易出現匹配混亂,在引數較多時,不是最佳的方法

先來看看查詢字串是什麼

跟在 ? 後面的就是查詢字串

用=表示賦值,用&分隔變數

使用查詢字串同樣可以作為引數,不過,不是像使用群組一樣,將引數傳入到home裡面,而是將查詢字串的引數和值以dict的形式儲存在request.get裡面, 獲取值value的方式有兩種:

1.request.get[key]

2.request.get.get(key) (建議使用第二種)

所以要修改views.py:

在瀏覽器輸入http://localhost:8000/?a=5&b=3

即可顯示同樣的內容

注意:如果在瀏覽器裡面輸入http://localhost 或http://localhost/a=5 這樣都是合法的, 但不一定不會報錯.首先,引數預設的話,會給相應的引數賦予預設的預設值,一般就是none其次,如果像上述的views.py裡面的home, 使用預設的查詢字串,回報錯,原因是home裡面,使用了int()函式,這個函式不能接受none型別的引數

形如 urls.py:

views.py

注意:在url()中傳入的dict的key應該與home的定義的引數一樣一下是錯誤的寫法:

輸入http://localhost:8000/a=6&b=7

瀏覽器會報錯:

原因是引數重複賦值了

上述url下, 實現過程如下:

param1 = 6, param2 = 7

a = 5, b = 3

home(request, param1, param2) 還是 home(request, a, b)

瀏覽器直譯器無法判斷,所以會報錯

使用群組和關鍵字引數混搭時,要注意不要重複賦值

下面寫法都是正確的:

輸入:http://localhost:8000/a=5

注意:如果這麼寫,又會報錯

輸入: http://localhost/b=3

報錯:引數a重複賦值

是不是很奇怪:在正規表示式裡,不是給a賦值呀,是』b=(\d)』

原因:注意,b=不是說第乙個群組的變數名為b, 只是讓url更容易理解而已, 前面說過,群組是按順序給檢視函式傳入引數的,所以,不管第乙個群組的變數名為什麼,都是傳給檢視函式除了reuqest外的第乙個引數,所以,上面實際是給引數a傳來兩次值,於是報錯

django獲取url引數總結

ian python 2012 02 28 1 無引數情況 配置url及其檢視如下 訪問輸出結果為 hello world 2 傳遞乙個引數 配置url及其檢視如下,url中通過正則指定乙個引數 訪問輸出結果為 the param is china 3 傳遞多個引數 參照第二種情況,以傳遞兩個引數為...

Django的高階url配置

關於django的url配置,有特別多的方法和方式,最簡單的理解就是 from django.conf.urls.defaults import from mysite.views import hello,current datetime,hours ahead urlpatterns patte...

django 帶引數的 url

url就像筋絡一樣把django這個大框架的各個部分緊緊的連線成乙個整體,所以要了解django從url開始是乙個不錯的方向。一般的view template url的關係這裡就不講了,下面會詳細介紹下在url中引數的傳遞的例子。1.簡單的引數呼叫 url r articles d d news.v...