Django URL组件

 

URL负责路由分发功能

 

静态路由:

urlpatterns = [
    path('articles/2003/', views.special_case_2003),
]

动态路由:

1 from django.urls import re_path
3 from app01 import views
4  
5 urlpatterns = [
6     re_path(r'^articles/(?P<year>[0-9]{4})/$', views.year_archive), # 动态路由
7     re_path(r'^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/$', views.month_archive), # 动态路由
8     re_path(r'^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/(?P<slug>[\w-]+)/$', views.article_detail), # 动态路由
9 ]  

django2.0:

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),
]

view视图方法需要解析以上传送过去的参数

include 子url 

当有多个app时,每个app可以有自己的urls.py, 只需在顶级urls.py中include一下就可以

from django.urls import include, path
 
urlpatterns = [
    path('community/', include('aggregator.urls')),
    path('contact/', include('contact.urls')),
]

django 在匹配url时,只要遇到include()语法, 就会把url分成2部分,比如上面代码里的url, 只要匹配上community/,就会把整条url丢给include('aggregator.urls')子urls.py。 子urls.py负责匹配后面的部分。

传递额外参数给views

from django.urls import path
from . import views
 
urlpatterns = [
    path('blog/<int:year>/', views.year_archive, {'foo': 'bar'}),
]

 

posted @ 2019-04-01 20:26  Neroi  阅读(159)  评论(0)    收藏  举报