Django路由(url)

1.基本配置

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

2.分组命名匹配

  在Python的正则表达式中,分组命名正则表达式组的语法是(?P<name>pattern),其中name是组的名称,pattern是要匹配的模式。

  实例

#url.py
 url(r'^date/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/$',views.date)
#views.py
def date(request,year,month):
    print("year:",year)
    print("month:",month)
    return HttpResponse('OJBK')

3.反向解析URL(本质上就是给url匹配模式起别名,然后用过别名拿到具体的URL路径)
   
     1. 怎么起别名?
      在url匹配模式中,定义name="别名"
     2. 如何使用?
          1. 在模板语言里面使用: {% url "别名" %}  --> 得到具体的URL路径
        
        2. 在视图中如何使用: from django.urls import reverse
         reverse("别名")  --> 得到具体的URL路径
        
     3. 如何传参数?
        1. 模板语言中:{% url "别名" 2018 "nb" %}
         
        2. 视图函数中
         传位置参数:reverse("别名", args=(2018, "nb"))
    
         传关键字参数:reverse("别名" kwargs={"year": 2018, "title": "nb"})
   4. namespace
        为了防止不同的app下面的url匹配模式有重复的别名
    
   

posted @ 2019-04-14 21:33  寒~轩  阅读(95)  评论(0编辑  收藏  举报