path url 区别
本文将对django2.0新出的path函数的语法和使用进行介绍,虽然目前还是可以使用django.conf.urls里的函数,但是你还是要熟悉一下新的语法,以方便进行后续的开发工作。
path函数定义
path(route, view, kwargs=None, name=None)
例子
from django.urls import include, path
urlpatterns = [
path('index/', views.index, name='main-view'),
path('bio/<username>/', views.bio, name='bio'),
path('articles/<slug:title>/', views.article, name='article-detail'),
path('articles/<slug:title>/<int:section>/', views.section, name='article-section'),
path('weblog/', include('blog.urls')),
...
]
route中可用自动类型转换
str - 匹配字符串(不写的话默认此类型) 不含最后的斜线
int - 整数
slug - 匹配ASCII字母和数字,含下划线和减号
uuid - 匹配UUID 返回一个UUID实力对象(UUID中的字母全部为小写)
path - 匹配所有不为空的路径,含最后的斜线
另外在django.urls新增了re_path来匹配正则,用法和老的url一致。
使用path前
re_path(r'^user/(?P<pk>\d+)/$', ProfileDetailView.as_view()),
re_path(r'^user/(?P<year>[0-9]{4})/$', YearArchive.as_view()),
使用path后
path('user/<int:pk>/', ProfileDetailView.as_view()),
path('user/<int:year>/', YearArchive.as_view()), #无4位数限制