Django內建的url轉換器
阿新 • • 發佈:2018-11-01
在寫專案中,我們有時候需要規定url傳遞的引數的種類,這個時候我們就需要用到Django中內建的url轉換器了。
編寫測試程式碼:
在專案中的app中的views.py中寫入一下程式碼:
from django.http import HttpResponse
def student_detail(request,student_id):
text = "該學生的學號是:%s" % student_id
return HttpResponse(text)
然後在urls.py中寫入對映:
from django.urls import path
from book import views
urlpatterns = [
path('student/<int:student_id>',views.student),
]
再網址中輸入一下程式碼測試
http://127.0.0.1:8000/student/1
效果就自行查看了。
而當我們最後面的引數傳入不是一個數字的時候,即輸入網址時最後面不是一個int型變數時,我們將訪問不到頁面的。
Django中除了int還有其他的一些型別轉換
我們在urls.py中匯入
from django.urls import converters
然後按住ctrl鍵,單擊converters。就會進入到Django中convserters.py這個檔案中
我們可以看到這個檔案中有五個類,所以Django中內建的轉換器有5種,
IntConverter類
regex = '[0-9]+'
[0-9] 就是隻能0到9的中的整形數字
+ 表示1個或多個
StringConverter類(沒有使用轉換器的時候預設轉換器)
regex = '[^/]+'
[^] 表示除了後面的東西都可以,即 [^/] 除了 ‘/’ 的都可以
UUIDConverter類
regex = '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}'
[0-9a-f] 表示只能是0到9
UUID是什麼?
SlugConverter類
regex = '[-a-zA-Z0-9_]'
上面程式碼的意思是由 == -或a-z或A-Z或0-9或_ == 一個或多個組成的字元竄。
PathConverter類
regex = '.+'
‘.’ 表示任意字元,所以path可以傳遞任何字串,符號等等。