日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Django从理论到实战(part9)--path和re_path

發布時間:2023/12/19 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Django从理论到实战(part9)--path和re_path 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

學習筆記,僅供參考

參考自:Django打造大型企業官網;

本系列Blog以應用為主,理論基礎部分我在后端專欄的Django系列博客已經寫過了,如果有些需要補充的知識點,我會在這個系列中,盡量詳細的寫一下。



path和re_path


path函數


語法


path(route,view,name=None,kwargs=None)

參數講解


  • route參數

該參數指定了url的匹配規則。

我們在該參數中,可以指定url需要傳遞的參數,比如在訪問文章詳情頁的時候,可以傳遞一個id。傳遞參數是通過<>尖括號來進行指定的,并且在傳遞參數的時候,可以指定這個參數的數據類型(如果沒有指定任何數據類型則默認為str類型),比如文章的id都是int類型,那么可以寫成 <int:id>的形式,在匹配的時候,就只會匹配到id為int類型的url,而不會匹配其他數據類型的url。

幾個常用的數據類型:

數據類型解釋底層正則形式
str非空的字符串類型,默認的轉換器,但是不能包含斜杠/[^/]+
int匹配任意的零或者正數的整形,到視圖函數中就是一個int類型[0-9]+
slug由英文中的橫杠-,或者下劃線_連接英文字符或者數字而成的字符串[-a-zA-Z0-9_]+
uuid匹配uuid字符串,使用UUID類生成的字符串,是全球唯一的字符串[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}
path匹配非空的英文字符串,可以包含斜杠/.+

  • view參數

該參數可以為一個視圖函數,或者是類視圖.as_view(),或者是django.urls.include()函數的返回值。


  • name參數

這個參數是給url取個名字,在項目比較大時,url比較多時,設置該參數用處很大。


  • kwargs參數

有時候想給視圖函數傳遞一些額外的參數,就可以通過kwargs參數進行傳遞。這個參數接收一個字典,會通過關鍵字參數的方式傳到視圖函數中去,比如以下的url規則:

from django.urls import pathfrom . import viewsurlpatterns = [path('blog/<int:year>/', views.year_archive, {'foo': 'bar'}),]

那么以后在訪問http://127.0.0.1:8000/blog/2020/的時候,會將foo=bar作為關鍵字參數傳給year_archive函數。


re_path函數


有時候我們在寫url匹配的時候,想要寫使用正則表達式來實現一些復雜的需求,那么這時候我們可以使用re_path來實現。

re_path的參數和path一樣,只不過第一個參數route可以為一個正則表達式,比如:

from django.contrib import admin from django.urls import path from . import views from django.urls import re_path #.表示從當前包里導入urlpatterns = [path('admin/', admin.site.urls),re_path(r'year/(\d{4})/', views.year),re_path(r'birthday/(\d{4})/(\d{1,2})/(\d{1,2})/', views.page_birth),re_path(r'bunny/(?P<age>\d{1,2})/(?P<name>\w+)/', views.page_bunny),re_path(r'post_test/$', views.post_test),]

以上例子中我們可以看到,所有的route字符串前面都加了一個r,表示這個字符串是一個原生字符串。在寫正則表達式中是推薦使用原生字符串的,這樣可以避免在python這一層面進行轉義。

使用正則表達式捕獲參數時,我們需要用一個圓括號對正則表達式進行包裹,參數名需要通過尖括號 <> 進行包裹,并在尖括號 <> 前加上?P。

總結

以上是生活随笔為你收集整理的Django从理论到实战(part9)--path和re_path的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。