当我们创建了一个项目时,系统为我们创建了一份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, HttpResponse
import datetime def show_time(request):
now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
html = '<html><body>%s</body></html>' % now
return HttpResponse(html)

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

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

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

这样我们就可以通过http://localhost:8000/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<year>[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_urls

url(r'^payment/',  include('payment_urls')),

django–url的更多相关文章

  1. Django Url编码问题

    Django Url编码问题   最近在学习Django,写一个blog程序练练手手.对于一个才开始接触web开发的来说,难免会遇到一些问题.   有一个这样的模板: {%for k,v in cat ...

  2. Django URL(路由系统)

    Django URL Django 1.11版本 URLconf官方文档 URL配置(URLconf)就像 Django 所支撑网站的目录.它的本质是URL模式以及要为该URL模式调用的视图函数之间的 ...

  3. python :Django url /views /Template 文件介绍

    1,Django URL 路由系统 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL模式以及要为该URL模式调用的视图函数之间的映射表:你就是以这种方式告诉Django ...

  4. 第五篇Django URL name 详解

    Django URL name 详解 利用Django开发网站,可以设计出非常优美的url规则,如果url的匹配规则(包含正则表达式)组织得比较好,view的结构就会比较清晰,比较容易维护. Djan ...

  5. django url路径与模板中样式相对路径的问题

    static目录下有css和js及image等文件夹,里面放置网站的一些静态文件,static位于网站根目录下,django中配置静态文件这个就细说,网上都有,昨天在添加新内容时发现一个问题,我的ur ...

  6. Python自动化之django URL

    URL url(r'^detail-(?P<nid>\d+)-(?P<uid>\d+).html', views.detail) 会把(?P\d+)和(?P\d+)传到后台 需 ...

  7. Django URL name详解

    我们基于上一节的代码来开始这一节的内容. 上节源代码:zqxt_views(django 1.4 - django 1.10).zip [更新于 2016-09-06 00:13:23] 1. 打开 ...

  8. django url.py使用

    主要对象:patterns和url url有两个主要的参数,第一个是正则模板,第二个是处理的方法 他们的对应关系是,当我们在浏览器当中url的形式与正则相匹配时 就转向处理方法 如果url.py中的值 ...

  9. Django URL传递参数的方法总结(转)

    1 无参数情况 配置URL及其视图如下: 1 2 3 4 (r'^hello/$', hello)   def hello(request): return HttpResponse("He ...

  10. Django url()函数详解

    url()函数看起来的格式象: url(r^/account/$', views.index, name=index) ,它可以接收四个参数,分别是两个必选参数: regex . view 和两个可选 ...

随机推荐

  1. 模板引擎:Velocity&FreeMarker(转)

    Velocity,名称字面翻译为:速度.速率.迅速,用在Web开发里,用过的人可能不多,大都基本知道和在使用Struts,到底Velocity和Struts(Taglib和Tiles)是如何联系?在技 ...

  2. word2003公式编辑器公式显示不完整问题

    在段落里设置行距为:单倍行距.

  3. BZOJ 1036 [ZJOI2008]树的统计Count (树链剖分 - 点权剖分 - 单点权修改)

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1036 树链剖分模版题,打的时候注意点就行.做这题的时候,真的傻了,单词拼错检查了一个多小时 ...

  4. java tools: jmap

    SYNOPSIS jmap [ option ] pid click here to see detail DESCRIPTION jmap prints shared object memory m ...

  5. 在C#调用C++的DLL简析(一)——生成非托管dll

    经过一晚上的折腾,还是下点决心将些许的心得写下来,以免以后重复劳动. C#与C/C++相 比,前者的优势在于UI,后者的优势在于算法,C++下的指针虽然恶心,若使用得当还是相当方便的,最重要的问题是, ...

  6. Java:浅谈InputStream的close方法

    原则:最好在任何时候使用InputStream或者OutputStream的时候,在finally中调用close()方法,显式关闭. 一个典型的示例 InputStream in = null; t ...

  7. C#多线程开发

    1.进程与线程的区别 通俗的讲,进行就是任务管理器中进行列表中看到的正在运行的程序,它是一个动态的概念,活动的实体. 线程是程序执行流的最小单元,是线程中一个实体,是系统独立调度和分派CPU基本单位. ...

  8. sgu - 274 - Spam-filter

    题意:判断一个字符串是不是有效的邮件地址. 题目链接:http://acm.sgu.ru/problem.php?contest=0&problem=274 ——>>照着题目做. ...

  9. GMT、UTC、PDT 时间是什么?Linux下如何调整时区

       今天碰到一个时区配置问题,如果服务器时区配置不对,很可能在使用date相关函数时会出现莫名其妙的错误,现将相关时区说明及LINUX下调整时区方法记录如下,以做备忘. GMT GMT 是 Gree ...

  10. JavaWeb学习篇之----容器Response详解

    今天在来看一下Response容器的相关知识,其实这篇blog早就应该编写了,只是最近有点忙,所以被中断了.下面我们就来看一下Response容器的相关知识吧.Response和我们即将在后面说到的R ...