URL 路径可将URL 映射至视图上。具体来讲,URL 路径由字符串路径、视图和可在项目范围内命名URL的名称(名称为可选参数)组成。Django 遍历每个URL路径,并在第一个与请求URL匹配的路径处中止。随后,Django 导入与URL 路径匹配的视图并对其加以执行、传递HttpRequest 类实例和关键字(或者位置参数)。正则表达式
下面在blog 应用程序目录的urls.py 文件中添加下列代码行:django
from django.urls import path from . import views app_name = 'blog' urlpatterns = [ path('', views.post_list, name='post_list'), path('<int:year>/<int:month>/<int:day>/<slug:post>/', views.post_detail, name='post_detail'), ]
在上述代码中,经过app_name变量定义了应用程序命名空间,并可经过应用程序组织URL,并在引用时使用对应名称。这里经过 path() 函数定义了两种不一样的路径。其中,第一个URL 路径不接收任何参数,并映射至 post_list 视图。第二个路径接收下列4个参数,并映射至post_detail 视图上。app
此处,咱们使用尖括号捕捉URL值。任何定义于URL 路径中的值(形如<parameter>)均做为字符串被捕捉。咱们将使用路径转换器(如<int:year>)以实现特定的匹配,并返回一个整数和<slug:post>,其与slug 实现特定的匹配(由ASCII字母、数字、连字符和下划线构成的字符串)。函数
若是path() 和转换器没法知足当前要求,则可采用 re_path() 定义包含 Python 正则表达式的复杂URL 路径。post
接下来,须要在项目的主URL 路径中包含blog 应用程序的URL路径。对此,可编辑位于项目mysite 目录中的 urls.py 文件,以下所示:url
from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('blog/', include('blog.urls', namespace='blog')), ]
利用include 定义的新URL 路径引用了定义于blog 应用程序中的URL 路径,于是包含于blog/路径中。另外,此类路径还位于命名空间blog中。此外,命名空间须在整个项目中保持惟一。稍后,咱们便可方便的引用blog URL,如blog:post_list 和 blog:post_detail。spa
后面本人将对如何建立视图模板进行讲解,谢谢你们的支持。code