django2 X中url和path的區別及用法

2021-09-12 11:42:07 字數 1953 閱讀 8795

一:path和url的區別:

django.urls path

django.conf.urls url

path與url是兩個不同的模組,效果都是響應返回頁面, path呼叫的是python第三方模組或框架,而url則是自定義的模組,如views下的def函式對應你url中的引數值.

例如:url(r'^login',views.login),

def login(request):

return render(request,'login.html')

url路由基礎

1、在settings.py檔案中有乙個root_urlconf設定,設定的是在訪問**時通過哪乙個url檔案去匹配所請求的**

2、path引數的使用方法path(『blog/str:string/』) 簡單了很多,就是尖括號,前邊是str代表引數的型別,後面代表引數的名稱

path引數型別:

捕獲url中的引數需要用到尖括號<> 指定尖括號中的值型別比如int:astr:link這個轉換器還有許多態別比如:

int 匹配0和正整數

str 匹配任何空字串但不包括/

slug 可理解為注釋 匹配任何ascii碼包括連線線和下劃線

uuid 匹配乙個uuid物件(該物件必須包括破折號—,所有字母必須小寫)

path 匹配所有的字串 包括/(意思就是path前邊和後邊的所有)

3、url或者re_path要複雜一些 (r』^blog/(?p[0-9])/′)首先需要開始符和結尾符 ') 首先需要開始符^和結尾符 

′)首先需要開始符 

和結尾符,引數匹配乙個 ()就是乙個匹配引數,

(?p《匹配的欄位名》正規表示式)

4、進行匹配是不包括get或者post請求方式的引數及網域名稱比如www.qq.com/blog?num=1並不會匹配?後邊的字元

5、可以給request引數設定乙個預設值,最常見的分頁url,比如

urlpatterns=[

url(r'^page/$',views.page),

url(r'^page(?p[0-9]+)$',views.page)

]#views

def page(request,num='1'):

pass

6、自定義錯誤頁面關鍵字handler400=blog.views.page_no_find

#urls.py

…handler400=blog.views.page_no_find

二、在python3中使用django2,設定urls的區別

**在python3中使用django2的時候,在設定urls的時候,會遇到一些坑。這裡做一下記錄。

系統的urls.py裡,在1.x的時候,都是採用的url方式。如下

url(r'^', include("test1.urls")),

在2.0中,它推薦使用的是path模組,所以這裡就改寫一下。引包from django.urls import path

path('', include("test1.urls")),

這裡要注意的是,如果要使用正則,則要引入re_path,from django.urls import path, re_path

這裡面的正則寫法,有點意思,一定要使用()把正則包起來,然後用?p正式表示式 這種形式來表式。在自己專案中的urls.py裡,會有例子

2, 自己專案的urls.py裡,我們也使用path

1.x裡面的寫法是

url(r』^page=(\d+)&key=(\w+)$』, views.detail, name=」detail」), 

現在的寫法

re_path('page=(?p\d+)&key=(?p\w+)', views.detail, name="detail"),

這樣一對比就能明白了吧,我的鏈結是

3,關於系統的urls.py裡的namespace的問題

1.x中寫法

django 2 x路由系統匹配path

django2.x路由系統已經替換成下面的寫法 官方文件 url的路由表示用path和re path代替,模組的匯入由django1.x版本的 from django.conf.urls import url,include變成現在的django2.x中的 from django.urls impo...

Django2 X 返回響應內容

檢視函式是通過return方式返回,然後生成相應的網頁內容呈現在瀏覽器上,return是python的內建語法,用於設定函式的返回值,若要設定不同的響應方式,則需要使用django內建的響應類。如圖 響應型別 說明httpresponse hello world 狀態碼200,請求已成功被伺服器接受...

django中url和reverse使用

使用url標籤和reverse 函式,可以避免在模板和view中對url進行硬編碼,這樣即使url改變了,對模板和view也沒有影響,其實在模板,view中,如果想獲取當前訪問的url,那用request.path或request.get full path 是更方便的選擇,當然,如果想在templ...