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匹配模式有重复的别名