下面是“Python urls.py的三种配置写法实例详解”的完整攻略:
简介
urls.py
是Django中非常常用的配置文件,用于配置URL路由,即解析请求的URL路径并确定需要哪个视图函数处理这个请求。本文将介绍Python中urls.py的三种常见写法及其使用方法和示例。
第一种写法
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
path('news/', views.news_list, name='news_list'),
path('news/<int:pk>/', views.news_detail, name='news_detail'),
]
第一种写法采用了path()
函数进行视图函数和URL的绑定,这是Django 2.0以后新引入的路径配置方式。其中,path()
函数的第一个参数是URL路径,第二个参数是相应的视图函数,第三个参数是给这个URL起的名字。int:pk
是一个路径参数,表示数字类型的主键值。
第二种写法
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^news/$', views.news_list, name='news_list'),
url(r'^news/(?P<pk>\d+)/$', views.news_detail, name='news_detail'),
]
第二种写法采用了url()
函数进行视图函数和URL的绑定,这是Django 1.x版本中一种常见的路径配置方式。其中,url()
函数的第一个参数是URL正则表达式,第二个参数是相应的视图函数,第三个参数是给这个URL起的名字。(?P<pk>\d+)
是一个参数组,表示数字类型的主键值。
第三种写法
from django.conf.urls import include, url
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^blog/', include('blog.urls')),
]
第三种写法采用了include()
函数进行模块的引入,这是一个常见的路由配置方式,允许Django应用组织成多个子模块。其中,第一个参数是URL前缀,第二个参数是要包含的路由配置文件。
示例
示例1
假设我们要建立一个blog网站,包括文章列表(news_list)、文章详情页(news_detail)和评论列表(comment_list)等页面。我们可以按照第一种写法进行路由的配置:
from django.urls import path
from . import views
urlpatterns = [
path('', views.news_list, name='news_list'),
path('<int:pk>/', views.news_detail, name='news_detail'),
path('<int:pk>/comments/', views.comment_list, name='comment_list'),
]
这里我们使用了三个不同的URL路径,分别对应着文章列表页、文章详情页和评论列表页。我们将这些路径链接到对应的视图函数,并为它们命名,方便在模板中使用。
示例2
如果我们的blog网站采用了子模块(submodule)进行部署,我们可以按照第三种写法进行路由的配置:
from django.urls import path
from . import views
app_name = 'blog'
urlpatterns = [
path('', views.news_list, name='news_list'),
path('<int:pk>/', views.news_detail, name='news_detail'),
path('<int:pk>/comments/', views.comment_list, name='comment_list'),
]
这里我们为这个模块命名为blog
,并使用了app_name
来声明这个名称。除此之外,我们的路由配置与示例1是完全一致的。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python urls.py的三种配置写法实例详解 - Python技术站