博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
django中url参数详解(路由系统)
阅读量:5288 次
发布时间:2019-06-14

本文共 1789 字,大约阅读时间需要 5 分钟。

路由系统

1、单一路由对应

1
url(r
'^index$'
, views.index),

2、基于正则的路由

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

3、添加额外的参数

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

4、为路由映射设置名称

1
2
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
  • Model中使用获取URL  自定义get_absolute_url() 方法
class NewType(models.Model):    caption = models.CharField(max_length=16)    def get_absolute_url(self):        """        为每个对象生成一个URL        应用:在对象列表中生成查看详细的URL,使用此方法即可!!!        :return:        """        # return '/%s/%s' % (self._meta.db_table, self.id)        # 或        from django.urls import reverse        return reverse('NewType.Detail', kwargs={
'nid': self.id})

 

获取请求匹配成功的URL信息:request.resolver_match

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

1
url(r
'^web/'
,include(
'web.urls'
)),

6、命名空间

a. project.urls.py

1
2
3
4
5
6
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'
)),
]

b. app01.urls.py

1
2
3
4
5
6
7
from 
django.conf.urls 
import 
url
from 
app01 
import 
views
 
app_name 
= 
'app01'
urlpatterns 
= 
[
    
url(r
'^(?P<pk>\d+)/$'
, views.detail, name
=
'detail'
)
]

c. app01.views.py

1
2
3
def 
detail(request, pk):
    
print
(request.resolver_match)
    
return 
HttpResponse(pk)

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

  • v = reverse('app01:detail', kwargs={'pk':11})
  • {% url 'app01:detail' pk=12 pp=99 %}

django中的路由系统和其他语言的框架有所不同,在django中每一个请求的url都要有一条路由映射,这样才能将请求交给对一个的view中的函数去处理。其他大部分的Web框架则是对一类的url请求做一条路由映射,从而是路由系统变得简洁。

转载于:https://www.cnblogs.com/qkqBeer/articles/9405794.html

你可能感兴趣的文章
lsblk请参阅块设备
查看>>
SVM-SVM概述
查看>>
STL algorithm算法lower_bound和upper_bound(31)
查看>>
linux系统下怎么安装.deb文件?
查看>>
javascript常见编程模式举例
查看>>
列出man手册所有函数的方法
查看>>
数字信号处理101——DSP系统设计入门课程(1)
查看>>
[从jQuery看JavaScript]-匿名函数与闭包(Anonymous Function and Closure)【转】
查看>>
VisualStudio 常用快捷键-整理
查看>>
netty研究【1】:编译源代码
查看>>
GTK接口定义和实现
查看>>
Hadoop生态系统介绍
查看>>
(网页)AngularJS 参考手册
查看>>
uva 11468 Substring
查看>>
SoapUI、Jmeter、Postman三种接口测试工具的比较分析
查看>>
Android平台实现与Apache Tomcat服务器数据交互(MySql数据库)
查看>>
Cout vs printf---缓存与引用,流处理顺序(转ithzhang,知乎郝译钧)
查看>>
排座椅(seat)
查看>>
XOR Queries
查看>>
MSIL学习------从HelloWorld开始
查看>>