django.urls 函數,用於 URLconf

path()

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

傳回一個元素,用於包含在 urlpatterns 中。例如

from django.urls import include, path

urlpatterns = [
    path("index/", views.index, name="main-view"),
    path("bio/<username>/", views.bio, name="bio"),
    path("articles/<slug:title>/", views.article, name="article-detail"),
    path("articles/<slug:title>/<int:section>/", views.section, name="article-section"),
    path("blog/", include("blog.urls")),
    ...,
]

route

route 參數應為字串或 gettext_lazy()(請參閱 翻譯 URL 模式),其中包含 URL 模式。該字串可以包含角括號(如上面的 <username>),以捕獲 URL 的一部分,並將其作為關鍵字參數傳遞給視圖。角括號可以包含轉換器規範(如 <int:section> 中的 int 部分),這會限制匹配的字元,並且還可以更改傳遞給視圖的變數類型。例如,<int:section> 會匹配十進位數字字串,並將值轉換為 int

在處理請求時,Django 會從 urlpatterns 中的第一個模式開始,並逐一下滑列表,將請求的 URL 與每個模式進行比較,直到找到匹配的模式。有關更多詳細資訊,請參閱 Django 如何處理請求

模式不會匹配 GET 和 POST 參數,或網域名稱。例如,在對 https://www.example.com/myapp/ 的請求中,URLconf 將尋找 myapp/。在對 https://www.example.com/myapp/?page=3 的請求中,URLconf 也會尋找 myapp/

view

view 參數是視圖函數,或是類別視圖的 as_view() 的結果。它也可以是 django.urls.include()

當 Django 找到匹配的模式時,它會呼叫指定的視圖函數,並以 HttpRequest 物件作為第一個參數,並將從路由「捕獲」的任何值作為關鍵字參數。

kwargs

kwargs 參數允許您將其他參數傳遞給視圖函數或方法。有關範例,請參閱 將額外選項傳遞給視圖函數

name

命名您的 URL 允許您從 Django 中的其他位置,尤其是在範本中,明確地參考它。此強大的功能允許您對專案的 URL 模式進行全域變更,而只需接觸單一檔案。

請參閱 命名 URL 模式,以了解 name 參數的用途。

re_path()

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

傳回一個元素,用於包含在 urlpatterns 中。例如

from django.urls import include, re_path

urlpatterns = [
    re_path(r"^index/$", views.index, name="index"),
    re_path(r"^bio/(?P<username>\w+)/$", views.bio, name="bio"),
    re_path(r"^blog/", include("blog.urls")),
    ...,
]

route 參數應該是字串或 gettext_lazy()(請參閱 翻譯 URL 模式),其中包含與 Python 的 re 模組相容的正規表示式。字串通常使用原始字串語法 (r''),以便它們可以包含像 \d 這樣的序列,而無需用另一個反斜線來逸出反斜線。進行匹配時,正規表示式中捕獲的群組會傳遞給視圖,如果群組已命名,則作為命名參數傳遞,否則作為位置參數傳遞。這些值會以字串形式傳遞,而不會進行任何類型轉換。

route$ 結尾時,與 path_info 比對的整個請求 URL 必須符合正規表示式模式(使用 re.fullmatch())。

viewkwargsname 參數與 path() 的參數相同。

include()

include(module, namespace=None)[來源]
include(pattern_list)
include((pattern_list, app_namespace), namespace=None)

一個函數,它接受另一個 URLconf 模組的完整 Python 匯入路徑,該模組應在此處「包含」。或者,也可以指定要將條目包含在其中的應用程式命名空間執行個體命名空間

通常,應用程式命名空間應由包含的模組指定。如果設定了應用程式命名空間,則可以使用 namespace 參數設定不同的執行個體命名空間。

include() 也接受可傳回 URL 模式的可迭代物件,或包含此類可迭代物件加上應用程式命名空間名稱的 2 元組作為參數。

參數:
  • module – URLconf 模組(或模組名稱)

  • namespace (str) – 要包含的 URL 條目的執行個體命名空間

  • pattern_listpath() 和/或 re_path() 執行個體的可迭代物件。

  • app_namespace (str) – 要包含的 URL 條目的應用程式命名空間

請參閱 包含其他 URLconfURL 命名空間和包含的 URLconf

register_converter()

register_converter(converter, type_name)[原始碼]

此函式用於註冊轉換器,以便在 path() route 中使用。

converter 參數為轉換器類別,而 type_name 為路徑模式中使用的轉換器名稱。請參閱 註冊自訂路徑轉換器 以取得範例。

自 5.1 版本起已棄用: 覆寫現有轉換器已棄用。

用於 URLconfs 中的 django.conf.urls 函式

static()

static.static(prefix, view=django.views.static.serve, **kwargs)

在除錯模式下,用以回傳服務檔案之 URL 樣式的輔助函式

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    # ... the rest of your URLconf goes here ...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

handler400

handler400

一個可呼叫的物件,或是一個字串,代表當 HTTP 客戶端送出導致錯誤狀況且回應狀態碼為 400 的請求時,應呼叫之視圖的完整 Python 匯入路徑。

預設值為 django.views.defaults.bad_request()。如果您實作自訂視圖,請確保它接受 requestexception 參數,並回傳一個 HttpResponseBadRequest

handler403

handler403

一個可呼叫的物件,或是一個字串,代表當使用者沒有存取資源所需的權限時,應呼叫之視圖的完整 Python 匯入路徑。

預設值為 django.views.defaults.permission_denied()。如果您實作自訂視圖,請確保它接受 requestexception 參數,並回傳一個 HttpResponseForbidden

handler404

handler404

一個可呼叫的物件,或是一個字串,代表當沒有任何 URL 模式符合時,應呼叫之視圖的完整 Python 匯入路徑。

預設值為 django.views.defaults.page_not_found()。如果您實作自訂視圖,請確保它接受 requestexception 參數,並回傳一個 HttpResponseNotFound

handler500

handler500

一個可呼叫的物件,或是一個字串,代表當發生伺服器錯誤時,應呼叫之視圖的完整 Python 匯入路徑。當視圖程式碼中發生執行階段錯誤時,會發生伺服器錯誤。

預設值為 django.views.defaults.server_error()。如果您實作自訂視圖,請確保它接受一個 request 參數,並回傳一個 HttpResponseServerError

回到頂端