django路由

 

路由

无名分组

url(r'^test/([0-9]{4})/([0-9]{2})', views.test)

  • url为一个函数,第一个参数写正则表达式
  • 路由从上往下匹配,一旦匹配成功就不继续向下走了
  • 如果分多个组,相应的视图函数就需要用多个参数接收,个数必须一致,或者使用*args
  • 在setting里设置:APPEND_SLASH=False,请求时,浏览器不会自动补全斜杠,带上斜杠就匹配失败
  • 伪静态,方便搜索引擎收录
有名分组
  • url(r'^test/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})', views.test)
  • 相应的视图函数中的参数名字和个数必须一致,否则会报错,位置可以颠倒
  • 有名分组可以使用**kwargs接收
  • 分组捕获的参数,都是str类型
  • 可以可以设置默认值
路由分发
  • 先导入from django.conf.urls import include
  • url(r'^app01/',include('app01.urls'))
  • 在相应的app里创建urls.py文件
  • 文件中的urlpatterns不能变名字,其他写法与自带的相同
反向解析
1.路由中,命一个名,url(r'^index/', views.index,name='n1')
2.在视图函数里导入from django.shortcuts import reverse # 拿到反向解析的url url = reverse('n1') 3.在模板里使用时: {% url 'n1' %} 4.带位置参数的反向解析 url(r'^index/([0-9]{4})/([0-9]{2})', views.index,name='n1') 在视图中:url=reverse('n1',args=(2012,12,)) 在模板中:{% url 'n1' 2012 12 %} 5.带关键字参数反向解析 url(r'^index/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})', views.index,name='n1') 在视图中: 方法一:url=reverse('n1',args=(2012,12,) 方法二:url=reverse('n1',kwargs={'year'=2012,'month':12}) 在模板中: 方法一:{% url 'n1' 2012 12 %} 方法二:{% url 'n1' month=12 year=2012 %} 注意:按位置传,顺序必须是固定的 作用:修改路由中url的时候,其它地方不需要改动 
名称空间
(知道它,但是建议不同app的url里name不能重名,app的名字_name)
主urls中
    url(r'^app01/', include('app01.urls',namespace='app01')), url(r'^app02/', include('app02.urls',namespace='app02')), app01的urls中 urlpatterns = [ url(r'^test',views.test3 ,name='test'), ] app02的urls中 urlpatterns = [ url(r'^test02',views.test3 ,name='test'), ] 在视图函数中: url=reverse('app02:test') 在模板中: <a href="{% url 'app02:test' %}">点我跳到首页</a>

转载于:https://www.cnblogs.com/luck-L/p/9585806.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值