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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Django 笔记3 -- URL

發布時間:2025/3/12 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Django 笔记3 -- URL 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Django 筆記3 – URL


Django 系列筆記是筆者學習、實踐使用 Django 的相關筆記,大量參考了知了課堂的《Django零基礎到項目實戰》教程。

參考文檔:
Django官方文檔(英文)
Django 中文文檔


一、URL


1、URL

URL 是 Uniform Resource Locator的簡寫,統一資源定位符。對可以從互聯網上得到的資源的位置和訪問方法的一種簡潔的表示,是互聯網上標準資源的地址。互聯網上的每個文件都有一個唯一的URL,它包含的信息指出文件的位置以及瀏覽器應該怎么處理它。

2、URL 格式

scheme://host:port/path/?query-string=xxx#anchor
  • scheme:訪問的協議,一般為http或者https以及ftp等
  • host:主機名,域名,比如www.baidu.com
  • port:端口號,當你訪問一個網站的時候,瀏覽器默認使用80端口。
  • path:查找路徑,比如:www.jianshu.com/trending/now ,后面的 trending/now 就是path
  • query-string:查詢字符串,比如:www.baidu.com/s?wd=python ,后面的 wd=python 就是查詢字符串。
  • anchor:錨點,前端頁面定位標記
  • URL中的所有字符都是ASCII字符集,如果出現非ASCII字符,比如中文,瀏覽器會進行編碼再進行傳輸

二、URL 分發


1、URL 映射配置:在 urls.py 的 urlpatterns 列表中配置

# 如果需要配置 URL 映射,需要導入相關的視圖文件 from front import viewsurlpatterns = [# 默認的 URL 映射,后臺管理入口# 如果只有默認的 URL 映射,Django 會提供一個默認的主頁path('admin/', admin.site.urls),# 自己配置 URL 映射,即把首頁映射到,并且可以給該 URL 取個別名path('', views.index, name='index'), ]

2、URL 中添加參數

url 中包含了一些參數需要動態調整,比如獲取某本書的url。

path 中帶參數:

# url 格式 .../book/book_id/--------------------------------------------- # url 映射# 根據傳入的 id 查找書本,格式<param> path('book/<book_id>/', views.book_detail) # 可以設置參數的數據類型,格式<type:param>,type 可以是 int、str 等 path('book/<int:book_id>/', views.book_detail)---------------------------------------------- # 對應的視圖函數# 函數中必須有 book_id 這個參數,且必須和 url 中的名稱一樣 # def book_detail(request,book_id):# 可以根據 book_id 進行數據庫查詢后返回具體的內容text = "這本書是:%s" % book_idreturn HttpResponse(text)

query-string 中帶參數:

# url 格式 .../book/detail/?id=1--------------------------------------------- # url 映射 path('book/detail/', views.book_detail)----------------------------------------------# 對應的視圖函數 def book_detail(request):# 獲取查詢字符串中的參數book_id = request.GET.get("id")text = "這本書是:%s" % book_idreturn HttpResponse(text)

默認參數:

# url 映射# 兩個 path 映射到同一個視圖函數 urlpatterns = [path('book/', views.book_detail),path('book/<int:num>/', views.book_detail), ]---------------------------------------------- # 視圖函數# 視圖函數中可以為 num 指定默認參數,這樣當 url 中沒有 num 這個參數時會使用默認值 def book_detail(request, num=1):

3、URL 映射包含 app 的 urls 模塊

項目的 urls 配置:

from django.urls import path,includeurlpatterns = [# 即把包含 index/ 的 URL,都映射到 index 模塊中的 urls.py 中的 urlpatterns# URL 不需要寫主機名和端口號path('index/',include("index.urls")) ]

app 的 urls 配置:

from django.urls import path,includeurlpatterns = [# app 中的 urls.py 中的 urlpatterns 的 path 直接從項目映射的 url 后面開始# 例如:下面的 path 映射的是 'index/first/path('first/', views.first) ]

三、URL 匹配


1、path 函數

path(route,view,name=None,kwargs=None)
  • route參數:url的匹配規則。這個參數中可以指定url中需要傳遞的參數,比如在訪問文章詳情頁的時候,可以傳遞一個id。傳遞參數是通過 <> 尖括號來進行指定的。并且在傳遞參數的時候,可以指定這個參數的數據類型,比如文章的id都是int類型,那么可以這樣寫< int:id>,以后匹配的時候,就只會匹配到id為int類型的url,而不會匹配其他的url,并且在視圖函數中獲取這個參數的時候,就已經被轉換成一個 int 類型了。常用的類型:
    • str:非空的字符串類型。默認的轉換器。但是不能包含斜杠。
    • int:匹配任意的零或者正數的整形。到視圖函數中就是一個int類型。
    • slug:由英文中的橫杠-,或者下劃線_連接英文字符或者數字而成的字符串。
    • uuid:匹配uuid字符串。
    • path:匹配非空的英文字符串,可以包含斜杠。
  • view參數:可以為一個視圖函數或者是類視圖.as_view()或者是django.urls.include()函數的返回值。
  • name參數:這個參數是給這個url取個名字的,這在項目比較大,url 比較多的時候用處很大。
  • kwargs參數:有時候想給視圖函數傳遞一些額外的參數,就可以通過kwargs參數進行傳遞。這個參數接收一個字典。傳到視圖函數中的時候,會作為一個關鍵字參數傳過去。path('blog/<int:xx>/', views.xxx, {'key': 'value'})

2、re_path 函數:

re_path 使用正則表達式進行 url 匹配,re_path 的 route參數可以為一個正則表達式

# re_path 函數 re_path(route,view,name=None,kwargs=None)# route 參數格式 r'.../(?P<year>[0-9]{4})/'
  • r:表示這個字符串是一個原生字符串
  • ?P< name>:正則表達式的名稱為 name
  • <>后面:正則表達式

三、URL 反轉


已知視圖函數,反轉得到它的 url

1、url反轉:reverse()

# 格式 reverse('命名空間')# 如果有應用/實例命名空間,應當指明 reverse('命名空間:命名空間')# 如果 url 中需要傳遞參數,可以通過kwargs來傳遞參數 reverse('命名空間:命名空間', kwargs={'key':value})# reverse 反轉url 的時候不區分GET請求和POST請求 # 只能手動添加查詢字符串的參數 reverse('命名空間:命名空間') + "?q=xxx/"

2、自定義 URL 轉換器

步驟:

  • 定義一個類
  • 在類中定義一個屬性 regex 用來保存 url 轉換器規則的正則表達式
  • 實現 to_python(self,value) 方法,將 url 中的值轉換后傳給視圖函數
  • 實現 to_url(self,value) 方法,url 反轉時將傳進來的參數轉換后,拼接成一個正確的url
  • 將定義好的轉換器,注冊到django中

示例:

# 匹配四個數字年份的 url 轉換器# 1. 定義一個類 class FourDigitYearConverter:# 2. 定義一個正則表達式regex = '[0-9]{4}'# 3. 定義to_python方法def to_python(self, value):return int(value)# 4. 定義to_url方法def to_url(self, value):return '%04d' % value # 5. 注冊到django中 from django.urls import register_converter register_converter(converters.FourDigitYearConverter, 'convert')# 使用 path('book/<convert:year>/'

GOOD LUCK!


總結

以上是生活随笔為你收集整理的Django 笔记3 -- URL的全部內容,希望文章能夠幫你解決所遇到的問題。

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