1. 程式人生 > >Django內建的url轉換器

Django內建的url轉換器

在寫專案中,我們有時候需要規定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種,
Django預設的轉換器

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

之間的任意整形數字和a-f 之間的字母,{8} 表示只能有8個這樣的字母或者數字。- 即指定了這個字元,必須使用它,整個字元竄的意思就是8個[0-9a-f],後面用一個"-"連線,後面的以此類推

UUID是什麼?

SlugConverter類

在這裡插入圖片描述

regex = '[-a-zA-Z0-9_]'

上面程式碼的意思是由 == -或a-z或A-Z或0-9或_ == 一個或多個組成的字元竄。

PathConverter類

在這裡插入圖片描述

regex = '.+'

‘.’ 表示任意字元,所以path可以傳遞任何字串,符號等等。

總結

1. str:除了斜槓/以外所有的字元都是可以的。

2. int:只有是一個或者多個的阿拉伯數字。

3. path:所有的字元都是滿足的。

4. uuid:只有滿足uuid形式的字串才行。

5. slug:英文中的橫杆或者英文字元或者阿拉伯數字或者下劃線才滿足。