Django url.py path/re_path路徑函數

Steven Wang
2 min readFeb 20, 2019

--

透過網址列本身當參數傳值到視圖view,將路徑中的值當作參數傳給視圖view

路徑函數有兩個path / re_path

re_path用於正規表達式

正規表達式的開始與結束 ^ ... $

re_path(‘^id/(?P<book_id>[a-zA-Z0–9]{4})/$’, views.show_book_id),
正则表达式中的[a-zA-Z0–9]{4}匹配4位数字+字母。?P<book_id>是正则表达式分组,book_id组名是函数参数。

适用http://127.0.0.1:8000/books/id/123d/、id/A13d/

对应的函数视图def show_book_id(request, book_id):

?P<book_id> 與 def show_book_id(request, book_id): 的book_id相對應 ###

re_path(‘^(?P<price>\d+\.\d+)/$’, views.show_book_price),
正则表达式中的\d+\.\d+匹配于小数。?P<price>是正则表达式分组,price组名是函数参数。

适用http://127.0.0.1:8000/books/32.36/

?P<price> 與 def show_book_price(request, price): 的price相對應 ###

路径转换器

路径中可以捕获路径中的数值,路径转换器可以将捕获的数值进行转换为有效参数,传递给函数视图。

path(‘hello1/<str:name>/’, views.hello1, name=’hello’),###捕獲網址列str當值傳給view

def hello1(request, name):
s = ‘<h3>hello1 {0}!</h3>’.format(name)
return HttpResponse(s)

path(‘<int:book_id>/’, views.show_book_id),###捕獲網址列int當值傳給view

def show_book_id(request, book_id):
s = ‘<h3>您选择的图书编号:{0}。</h3>’.format(book_id)
return HttpResponse(s)

--

--

Steven Wang
Steven Wang

No responses yet