博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
django–url
阅读量:4691 次
发布时间:2019-06-09

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

当我们创建了一个项目时,系统为我们创建了一份urlconf, 它可能是这样的:

urlpatterns = [    url(r'^admin/', admin.site.urls),]
  • r’^admin/’中的r 表示这是一个原始字符串,这样避免了使用过多的转义符
  • 不需要在^admin/前面加/,  因为django会自动为表达式添加。
  • ^ 表示对字符串的头部进行匹配,看下面的例子:
'^admin/'      表示以time/开始的任意url都会匹配,比如/admin/foo 和 /admin/bar

现在路由只有一条,那我们想要在我们的页面上显示时间, 下面来进行这些操作:

首先我们要在views里创建一个显示时间的函数:

from django.shortcuts import render, HttpResponseimport datetimedef show_time(request):      now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')      html = '%s'  % now     return HttpResponse(html)

视图已经有了,如果想让它在页面上显示的话,我们还需要一个路由:

urlpatterns = [    url(r'^admin/', admin.site.urls),    url(r'^time/$', views.show_time),]

我们添加的这条路由多了一个$ 号,  意思是 对字符串的尾部进行匹配.  '^time/$' 就是匹配/time/不能多也不能少。

这样我们就可以通过看到输出结果了。

总结一下url里的正则:

符号 匹配
. 任意字符
\d 任意数字
[A-Z] A-Z中的任意字符
[a-z] a-z中的任意字符
[A-Za-z] 任意大小写字母
+ 匹配一个或多个前面的字符
[^/]+ 匹配一个或多个不是/的字符
* 匹配0个或多个前面的字符
{1,3} 匹配1个到3个前面的字符

 

最后,是一些示例:

注意:url匹配是从上往下,有匹配的就不往下走了,所以一般把精确匹配的放在上面url(r'^admin/', admin.site.urls),   url(r'^articles/2003/$', views.special_case_2003),url(r'^articles/([0-9]{4})/$', views.year_archive),     #url传递给views时会传递两个值,一个是request, 一个是([0-9]{4})匹配到的值url(r'^articles/([0-9]{4})/([0-9]{2})/$', views.month_archive),     #request, 两个正则匹配的值,  一个() 一个参数url(r'^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$', views.month_archive),url(r'^articles/([0-9]{4})/([0-9]{2})/([0-9]+).(\w+)/$', views.month_archive),url(r'^articles/(?P
[0-9]{4})/$', views.year_archive), #year表示给正则一个别名,在正则中可以通过obj.group('year')获取到匹配到的值这里需要注意的是:如果url里指定了别名是year, 那么在views中参数名也必须叫year, 否则会报错,但是参数位置就没关系 了。。views接收到的参数总是字符串类型。


url中的include

如果我们的项目有多个app, 那么我们可以将每个app的url分离出来,这样可以每个app单独管理,方便 维护:

from app01 import urls as payment_urlsurl(r'^payment/',  include('payment_urls')),

转载于:https://www.cnblogs.com/huangxm/p/5554810.html

你可能感兴趣的文章
pip 警告!The default format will switch to columns in the future
查看>>
Arrays类学习笔记
查看>>
实验吧之【天下武功唯快不破】
查看>>
2019-3-25多线程的同步与互斥(互斥锁、条件变量、读写锁、自旋锁、信号量)...
查看>>
win7-64 mysql的安装
查看>>
dcm4chee 修改默认(0002,0013) ImplementationVersionName
查看>>
maven3在eclipse3.4.2中创建java web项目
查看>>
发布时间 sql语句
查看>>
黑马程序员 ExecuteReader执行查询
查看>>
记一些从数学和程序设计中体会到的思想
查看>>
题目1462:两船载物问题
查看>>
POJ 2378 Tree Cutting(树形DP,水)
查看>>
第二冲刺阶段个人博客5
查看>>
UVA 116 Unidirectional TSP (白书dp)
查看>>
第三方测速工具
查看>>
MySQL 网络访问连接
查看>>
在aws ec2上使用root用户登录
查看>>
数据访问 投票习题
查看>>
CIO知识储备
查看>>
cnblog!i'm coming!
查看>>