📜  Django-URL映射(1)

📅  最后修改于: 2023-12-03 15:14:44.766000             🧑  作者: Mango

Django URL 映射

Django 是一个流行的 Python web 框架,它使用 URL 映射将 URL 地址映射到对应的视图函数上。在本文中,我们将介绍 Django URL 映射的相关内容。

URL 映射的基本概念

在 Django 中,URL 映射通过 URLconf 实现,URLconf 是指 URL 配置文件,它告诉 Django 如何将 URL 映射到视图函数。URLconf 文件通常包含以下内容:

from django.urls import path

from . import views

urlpatterns = [
    path('articles/', views.article_list, name='article_list'),
    path('articles/<int:pk>/', views.article_detail, name='article_detail'),
]
  • from django.urls import path:导入 path 函数;
  • from . import views:导入视图函数;
  • urlpatterns:URL 映射表,包含多个 URL 映射项;
  • path('articles/', views.article_list, name='article_list'):URL 映射项,将路径 /articles/ 映射到视图函数 article_list 上,映射的名称为 article_list
  • path('articles/<int:pk>/', views.article_detail, name='article_detail'):URL 映射项,将路径 /articles/<文章 ID>/ 映射到视图函数 article_detail 上,映射的名称为 article_detail,其中 <int:pk> 表示文章 ID,是一个整数。
URL 映射的进阶用法

除了基本的 URL 映射外,Django 还支持以下进阶用法:

正则表达式

如果需要更灵活的 URL 映射,可以使用正则表达式。例如,以下 URL 映射将路径 /articles/<year>/<month>/ 映射到视图函数 article_list 上:

from django.urls import re_path

from . import views

urlpatterns = [
    re_path(r'^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/$', views.article_list, name='article_list'),
]

其中,re_path 函数接受一个正则表达式作为参数,正则表达式中使用 (?P<name>pattern) 的语法来匹配 URL 中的参数,名称为 name,匹配模式为 pattern。例如,(?P<year>[0-9]{4}) 匹配 4 位数字,名称为 year

包含应用程序命名空间

当多个应用程序的 URL 映射冲突时,可以使用应用程序命名空间来区分。例如,以下 URL 映射将路径 /articles/ 映射到视图函数 article_list 上:

from django.urls import path

from . import views

app_name = 'blog'

urlpatterns = [
    path('articles/', views.article_list, name='article_list'),
]

其中,app_name = 'blog' 为应用程序指定命名空间,name='blog:article_list' 指定了 URL 映射的名称,blog: 为应用程序命名空间。

反向解析 URL

在 Django 中,可以通过 URL 名称反向解析 URL。例如,以下 URL 映射将路径 /articles/ 映射到视图函数 article_list 上:

from django.urls import path

from . import views

urlpatterns = [
    path('articles/', views.article_list, name='article_list'),
]

当需要生成对应的 URL 时,可以使用 reverse 函数,例如:

from django.urls import reverse

url = reverse('article_list')

其中,reverse 函数将根据 URL 映射的名称,生成对应的 URL 地址。

结语

本文介绍了 Django URL 映射的基本概念和进阶用法,包括正则表达式、应用程序命名空间和反向解析 URL。了解这些内容后,可以更灵活地配置 Django 的 URL 映射。