8.url路由

Posted Outback

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了8.url路由相关的知识,希望对你有一定的参考价值。

1、单一路由对应

url(r‘^index/$‘, views.index),

这里要注意的是,/$ 表示只有只/结尾的才有效,如果把$符号去掉的话,只要是以index/开头都会匹配到这个url

   

2、基于正则的路由

   

url(r‘^index/(\d*)‘, views.index),

url(r‘^manage/(?P<name>\w*)/(?P<id>\d*)‘, views.manage),

   

3、添加额外的参数

   

url(r‘^manage/(?P<name>\w*)‘, views.manage,{‘id‘:333}),

   

4、为路由映射设置名称

   

url(r‘^home‘, views.home, name=‘h1‘),

url(r‘^index/(\d*)‘, views.index, name=‘h2‘),

设置名称之后,可以在不同的地方调用,如:

   

模板中使用生成URL {% url ‘h2‘ 2012 %}

函数中使用生成URL reverse(‘h2‘, args=(2012,)) 路径:django.urls.reverse,必须用django提供的reverse方法。

   

5、根据app对路由规则进行分类

   

在主url.py中进行设置

url(r‘^org/‘, include(‘organization.urls‘,namespace=‘org‘)),

   

organization.urls表示文件名,也就是说只要是org这个域里的url我都到organization.urls这个文件去找。比如 www.127.0.0.1:8000/org/list/

   

6、命名空间

   

a. project.urls.py

   

from django.conf.urls import url,include

 

urlpatterns = [

url(r‘^a/‘, include(‘app01.urls‘, namespace=‘author-polls‘)),

url(r‘^b/‘, include(‘app01.urls‘, namespace=‘publisher-polls‘)),

]

   

   

   

以上定义带命名空间的url之后,使用name生成URL时候,应该如下:

v = reverse(‘author-polls:detail‘, kwargs={‘pk‘:11})

{% url ‘author-polls:detail‘ pk=12 pp=99 %}

   

以上是关于8.url路由的主要内容,如果未能解决你的问题,请参考以下文章

ThinkPHP5静态地址路由和动态路由的区别?

004_URL 路由 - 高级路由特性

如何做到URL路由自定义

mvc——URL路由_1_定义路由(映射url到动作方法)

Laravel 检查给定 url 的路由是不是存在于路由中

CodeIngiter 路由控制路由自定义和 基于SEO的url重写等