Django进阶:Django路由系统精讲:揭秘Django的路由系统从URL映射到视图处理的全过程(必掌握)
在Django中,路由系统负责将用户的请求URL映射到相应的视图函数或类上。Django的路由配置位于每个应用的urls.py
文件以及项目的urls.py
文件中。
以下是一个简单的例子,展示了如何定义路由以及如何将URL模式映射到视图函数:
# 在应用的urls.py文件中
from django.urls import path
from . import views
urlpatterns = [
path('articles/2003/', views.special_case_2003), # 一个简单的例子
path('articles/<int:year>/', views.year_archive), # 带有转换器的例子
path('articles/<int:year>/<int:month>/', views.month_archive),
path('articles/<int:year>/<int:month>/<slug:slug>/', views.article_detail),
]
# 在项目的urls.py文件中
from django.urls import include, path
urlpatterns = [
path('blog/', include('blog.urls')), # 包含应用的URL配置
path('admin/', admin.site.urls),
]
# 在视图views.py中定义相应的视图函数
from django.http import HttpResponse
def special_case_2003(request):
return HttpResponse('Year 2003.')
def year_archive(request, year):
return HttpResponse('Year archive for %s.' % year)
def month_archive(request, year, month):
return HttpResponse('Month archive for %s-%s.' % (year, month))
def article_detail(request, year, month, slug):
return HttpResponse('Article detail for %s/%s/{%s}' % (year, month, slug))
在这个例子中,我们定义了一个包含四个路径的路由模式列表。每个路径都使用path
函数定义,其第一个参数是URL的字符串表示,第二个参数是对应的视图函数。<int:year>
中的<type:name>
语法定义了一个转换器,它将匹配相应类型的参数并将其作为关键字参数传递给视图函数。
这个例子展示了如何在Django中定义和使用路由系统。
评论已关闭