django-路由系统

2.0版本写法
from django.urls import path 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), ]


from django.conf.urls import url

from . import views

urlpatterns = [
    url(r'^articles/2003/$', views.special_case_2003),
    url(r'^articles/([0-9]{4})/$', views.year_archive),
    url(r'^articles/([0-9]{4})/([0-9]{2})/$', views.month_archive),
    url(r'^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$', views.article_detail),
]


1.urlpatterns按顺序往下匹配,成功匹配不在往下继续
2.若要从URL中捕获一个值,只需要在它周围放置一对圆括号(分组匹配)。

2.urls.py(路由系统)
1.正则匹配的模式
  1.分组匹配 能够在调用视图函数的时候能够传递位置参数

urlpatterns = [
    url(r'^articles/2003/$', views.special_case_2003),
    url(r'^articles/([0-9]{4})/$', views.year_archive),
会传给视图函数一个4位数字的位置参数


  2.分组命名匹配,能够在调用视图函数的时候能够传递关键字参数
urlpatterns = [
    url(r'^articles/2003/$', views.special_case_2003),
    url(r'^articles/(?P<year>[0-9]{4})/$', views.year_archive),
会传递给视图函数一个4为数字的关键字参数,相当于 year=



3.include 分级路由
请求的顺序:
请求——>project/urls.py-->-->app/urls.py-->app/views.py
在URL里面

url(r'^app01/', include(app01_urls, namespace="app01"),),

url匹配规则的别名

1.起别名是为了增加代码的健壮性
2 用法
  1)在views.py中如何根据别名找到url
    from django.urls import reverse
    url=reverse('别名')
  2)在模板语言中如何根据别名找到url
    {% url ‘别名’%}
  
 3。带参数的url如何反向生成?
  1.位置参数
    1)在views.py中:
      reverse('别名',args=(参数1,参数2,。。。))
    2)在模板语言中:
      {% url '别名' 参数1,参数2.。。 %}
  2.关键字参数
    1).在views.py中:
      reverse('别名',kwargs={'k1':参数1,。。。})
    2)在模板语言中:
      {% url ‘别名’ 参数1,参数2.。。%}
  
  
  4 namespace(命名空间)
    
# 使用include语法,将其他的urls.py 包含进来
url(r'^app01/', include(app01_urls, namespace="app01"),),
url(r'^app02/', include(app02_urls, namespace="app02")),
1. 位置参数
1. 在views.py中:
reverse("命名空间:别名", args=(参数1, 参数2, ...))
2. 在模板语言中:
{% url "命名空间:别名" 参数1, 参数2... %}


2. 关键字参数
1. 在views.py中:
reverse("命名空间:别名", kwargs={"k1":参数1, ...})
2. 在模板语言中:
{% url "命名空间:别名" 参数1, 参数2... %}


目的就是获得唯一的url
























































posted @ 2018-06-19 18:58  赵伟航  阅读(82)  评论(0编辑  收藏  举报