Django 基础教程

Django 查询

Django 展示数据

Django Admin

Django 模板

Django 表单组件

Django 高级

Django FAQ

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/django-url.html

Django url 路由详解


在 Django 中,URL 路径是用于匹配请求的一种方式。URL 配置允许您将请求映射到相应的视图函数或类。下面详细解释了 Django 中 URL 路径相关的概念,并提供了一些代码示例。

URL 配置

URL 配置是指将 URL 路径与视图函数或类关联起来的过程。在 Django 中,URL 配置通常位于应用程序的 urls.py 文件中。您可以在项目级别的 urls.py 中包含应用程序级别的 urls.py,以进行全局 URL 配置。

项目级 urls.py 示例:

from django.urls import include, path

urlpatterns = [
    path('admin/', admin.site.urls),
    path('myapp/', include('myapp.urls')), # 包含应用程序级别的urls.py
]

应用程序级 urls.py 示例:

from django.urls import path
from . import views

urlpatterns = [
    path('', views.index_view, name='index'),
    path('about/', views.about_view, name='about'),
    # ...其他路由定义...
]

路由定义位置

路由定义位置指的是在 urlpatterns 列表中定义 URL 路径的位置。路由定义顺序非常重要,Django 将按照 urlpatterns 列表的顺序进行匹配。

路由解析顺序

Django 按照 urlpatterns 列表的顺序从上到下逐一匹配 URL 路径。一旦找到匹配的路径,Django 将调用与该路径关联的视图函数或类。

路由命名

通过为每个 URL 路径设置名称,您可以在代码中使用反向解析来生成 URL,而不是直接硬编码 URL。

# 应用程序级urls.py
from django.urls import path
from . import views

urlpatterns = [
    path('article/<int:article_id>/', views.article_detail, name='article_detail'),
]

您可以在模板或视图中使用 reverse 函数进行反向解析:

from django.urls import reverse

# 在视图中使用
def my_view(request):
    article_id = 1
    url = reverse('article_detail', args=[article_id])
    # 生成的URL为 '/myapp/article/1/'
    # ...

# 在模板中使用
<a href="{% url 'article_detail' article_id=1 %}">Read Article</a>

RESTful风格接口

RESTful 风格接口是一种遵循 REST(Representational State Transfer)原则的 URL 设计风格,通常使用不同 HTTP 方法(GET、POST、PUT、DELETE 等)来执行不同的操作。

from django.urls import path
from . import views

urlpatterns = [
    path('api/articles/', views.ArticleListView.as_view(), name='article_list'),
    path('api/articles/<int:pk>/', views.ArticleDetailView.as_view(), name='article_detail'),
]

路径转换器占位符

路径转换器允许您在 URL 中使用特定的数据类型来匹配参数,并将其传递给视图函数或类。

from django.urls import path
from . import views

urlpatterns = [
    path('articles/<int:year>/', views.article_archive, name='article_archive'),
    path('articles/<str:slug>/', views.article_detail, name='article_detail'),
    path('users/<username>/', views.user_profile, name='user_profile'),
]

错误处理

Django 提供了处理各种 HTTP 错误的机制。您可以在 urlpatterns 中使用 handler404handler500 来定义 404 和 500 错误的处理视图。

from django.urls import path
from . import views

handler404 = 'myapp.views.custom_404_view'
handler500 = 'myapp.views.custom_500_view'

urlpatterns = [
    # ...其他路由定义...
]

在上述代码中,custom_404_viewcustom_500_view 是自定义视图函数,用于处理 404 和 500 错误。

在Django中,二级路由(也称为嵌套路由)指的是将不同的URL模式(视图函数)组织成一个层次结构,以便更好地管理和组织项目的URL。py` ...
它允许你在模板中动态地生成URL,而不需要硬编码URL或手动拼接URL参数。综上所述,URL模板标签是一个非常有用的Django模板标签,可 ...
在Java中,拼接URL通常用于将基础URL和查询参数、路径等部分组合在一起,以构建完整的URL。Maven依赖:Gradle依赖:示例代码 ...
下面是一个示例代码,演示了如何在Django模型中使用ImageField以及如何在中文URL中处理相关内容:首先,确保你的Django项目 ...
在Django中,`ImageField`是一个用于处理图片文件上传和处理的模型字段。以下是一个示例代码,演示了如何在Django模型中使用 ...