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