路由控制
Posted xuecaichang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了路由控制相关的知识,希望对你有一定的参考价值。
路由层:
1简单匹配
1、第一个参数是正则表达式(如果要精准匹配:‘^publish/$’) 2、第二个参数是试图(不要加括号) 3、Url(r’^admin/’,admin.site.urls),
2无名分组
按位置参数分组后,会把分组出来的数据,当位置参数,传到视图函数,所以视图函数需要定义形参。 -url(r‘^publish/([0-9]{4})/([0-9]{2})$‘, views.publish), -def publish(request,*args): 视图函数可以这样接收
3 有名分组
按关键字参数,有名分组之后,会吧分组出来的数据,当关键字参数,传到视图函数,所以视图函数需要定义形参,形参 名字要跟分组名字对应,与顺序无关 -url(r‘^publish/(?P<year>[0-9]{4})/(?P<mounth>[0-9]{2})/$‘, views.publish), -def publish(request, mounth,year):
******有名分组和无名分组不要混用
4 反向解析
先命一个名: 1、 无参数:url(r‘^publishadd133/$‘, views.publishadd,name=‘ddd‘), 2、 无名分组:url(r‘^publishadd/([0-9]{4})/([0-9]{2})/$‘, views.publishadd,name=‘ddd‘), 3、有名分组:url(r‘^publishadd/(?P<year>[0-9]{4})/(?P<mounth>[0-9]{2})/$‘, views.publishadd,name=‘ddd‘), 在模板层: 1、 无参数:{% url ‘ddd‘ %} 2 、无名分组的:{% url ‘ddd‘ 2018 12 %} 3、 有名分组:{% url ‘ddd‘ 2018 12 %} 还可以 {% url ‘ddd‘ year=2018 mounth=12 %} 在视图层: from django.shortcuts import reverse 在视图函数里: 无参数:url=reverse(‘ddd‘) 无名分组:url=reverse(‘ddd‘,args=(2018,12,)) 有名分组:url=reverse(‘ddd‘,args=(2018,12,)) 还可以 url=reverse(‘ddd‘,kwargs={‘year‘:2018,‘mounth‘:12}) 路由分发: 1、在不同的app里创建urls.py 2、在总路由 From django.conf.urls import include Url(‘^blog/’,include(‘blog.urls’)), url(r‘^app01/‘,include(‘app01.urls‘)), ******重点:总路由,不能加结束符$
名称空间:
-url(r‘^blog/‘,include(‘blog.urls‘,namespace=‘blog‘)), 子路由:url(r‘^publish/$‘, views.publish,name=‘test‘), 反向解析: -视图层:url = reverse(‘blog:test‘) -模板层:{% url ‘app01:test‘%} ***一般不要用*** 子路由:url(r‘^publish/$‘, views.publish,name=‘app01_test‘),
伪静态:
路由:url(r‘^book/(?P<id>d+.html)‘,views.book), 访问:http://127.0.0.1:8000/book/4.html
以上是关于路由控制的主要内容,如果未能解决你的问题,请参考以下文章