文档章节

[Django学习]第三章 视图和url配置

南寻
 南寻
发布于 2017/02/15 20:59
字数 1013
阅读 62
收藏 0

    在上一章使用django-admin.py startproject tests制作的项目中的tests文件夹里,创建一个views.py文件.

    1.在views文件中编写如下代码

from django.http import HttpResponse

def hello(request):
return HttpResponse('Hello World')

上面这段代码仅仅返回一个HttpResponse对象,而这个对象之包含文本“Hello World”.

 一个视图就是Python的一个函数。这个函数第一个参数的类型是HttpRequest;它返回一个HttpResponse实例。为了使一个Python的函数成为一个Django可识别的视图,它必须满足这两个条件。

2.打开urls.py文件,在原来的基础上添加

from django.conf.urls import url
from django.contrib import admin

from tests.views import hello

urlpatterns=[
url(r'^admin/', admin.site.urls),
url(r'^hello/$',hello),

]

如下

首先,我们从模块 (在 Python 的 import 语法中, tests/views.py 转译为 tests.views ) 中引入了 hello视图。

接下来,我们为urlpatterns加上一行: (‘^hello/$’, hello), 这行被称作URLpattern,它是一个Python的元组。元组中第一个元素是模式匹配字符串(正则表达式);第二个元素是那个模式将使用的视图函数。

Django在检查URL模式前,移除每一个申请的URL开头的斜杠(/)。 这意味着我们为/hello/写URL模式不用包含斜杠(/)。模式包含了一个尖号(^)和一个美元符号($)。这些都是正则表达式符号,并且有特定的含义: 上箭头要求表达式对字符串的头部进行匹配,美元符号则要求表达式对字符串的尾部进行匹配。

最好还是用范例来说明一下这个概念。 如果我们用尾部不是$的模式’^hello/’,那么任何以/hello/开头的URL将会匹配,例如:/hello/foo 和/hello/bar,而不仅仅是/hello/。类似地,如果我们忽略了尖号(^),即’hello/$’,那么任何以hello/结尾的URL将会匹配,例如:/foo/bar/hello/。如果我们简单使用hello/,即没有^开头和$结尾,那么任何包含hello/的URL将会匹配,如:/foo/hello/bar。因此,我们使用这两个符号以确保只有/hello/匹配,不多也不少。

你大多数的URL模式会以^开始、以$结束,但是拥有复杂匹配的灵活性会更好。

你可能会问:如果有人申请访问/hello(尾部没有斜杠/)会怎样。 因为我们的URL模式要求尾部有一个斜杠(/),那个申请URL将不匹配。 然而,默认地,任何不匹配或尾部没有斜杠(/)的申请URL,将被重定向至尾部包含斜杠的相同字眼的URL。

3.运行试试

python manage.py runserver

运行后打开浏览器http://127.0.0.1:8000/

发现找不到页面,为什么呢?因为刚刚配置的url是 http://127.0.0.1:8000/hello/

成功了。。。

关于正则表达式:

正则表达式 (或 regexes ) 是通用的文本模式匹配的方法。 Django URLconfs 允许你 使用任意的正则表达式来做强有力的URL映射,不过通常你实际上可能只需要使用很少的一 部分功能。 这里是一些基本的语法。

符号 匹配
. (dot) 任意单一字符
\d 任意一位数字
[A-Z] A 到 Z中任意一个字符(大写)
[a-z] a 到 z中任意一个字符(小写)
[A-Za-z] a 到 z中任意一个字符(不区分大小写)
+ 匹配一个或更多 (例如, \d+ 匹配一个或 多个数字字符)
[^/]+ 一个或多个不为‘/’的字符
* 零个或一个之前的表达式(例如:\d? 匹配零个或一个数字)
* 匹配0个或更多 (例如, \d* 匹配0个 或更多数字字符)
{1,3} 介于一个和三个(包含)之前的表达式(例如,\d{1,3}匹配一个或两个或三个数字)

© 著作权归作者所有

共有 人打赏支持
南寻
粉丝 64
博文 90
码字总数 35772
作品 0
朝阳
程序员
私信 提问
第三章 视图和URL配置

第三章 视图和URL配置 前一章中,我们解释了如何建立一个 Django 项目并启动 Django 开发服务器。 在这一章,你将会学到用Django创建动态网页的基本知识。 你的第一个基于Django的页面: He...

阿帆提
2016/11/10
8
0
第八章:高级视图和URL配置

第八章:高级视图和URL配置 在第三章,我们已经对基本的Django视图和URL配置做了介绍。 在这一章,将进一步说明框架中这两个部分的高级机能。 URLconf 技巧 URLconf没什么特别的,就象 Djan...

阿帆提
2016/11/10
2
0
第11章 通用视图

第11章 通用视图 这里需要再次回到本书的主题: 在最坏的情况下, Web 开发是一项无聊而且单调的工作。 到目前为止,我们已经介绍了 Django 怎样在模型和模板的层面上减小开发的单调性,但是...

阿帆提
2016/11/16
0
0
第一章:介绍Django

第一章:介绍Django 本书所讲的是Django:一个可以使Web开发工作愉快并且高效的Web开发框架。 使用Django,使你能够以最小的代价构建和维护高质量的Web应用。 从好的方面来看,Web 开发激动人...

阿帆提
2016/11/10
3
0
Django学习--003--视图

1.首先新建一个项目,进入想要建立项目的文件夹,使用下面命令: 注:the-site为项目名称,可以自己命名。 2.成功后,会出现使用tree命令,会出现如下文件结构。 注:Django 1.8.x 以上的,还...

clgo
2016/04/26
31
0

没有更多内容

加载失败,请刷新页面

加载更多

CentOS 安装PHP5和PHP7

安装PHP5 下载解压二进制包 [root@test-a src]# cd /usr/local/src/[root@test-a src]# wget http://cn2.php.net/distributions/php-5.6.32.tar.bz2[root@test-a src]# tar jxvf php-5.6......

野雪球
今天
3
0
windows上类似dnsmasq的软件Dual DHCP DNS Server

官网地址:http://dhcp-dns-server.sourceforge.net/官网定向的下载地址:https://sourceforge.net/projects/dhcp-dns-server/files/ 设置参考地址:http://blog.51cto.com/zhukeqiang/18264......

xueyuse0012
今天
3
0
LinkedHashMap源码解析

前言 HashMap中的元素时无序的,也就是说遍历HashMap的时候,顺序和放入的顺序是不一样的。 如果需要有序的Map,就可以采用LinkedHashMap. LinkedHashMap通过维护一个包含所有元素的双向链表,...

grace_233
今天
3
0
初识flask

文档 0.10.1版本 http://www.pythondoc.com/flask/index.html 1.0.2版本 https://dormousehole.readthedocs.io/en/latest/ 安装flask $ pip3 install flaskCollecting flask Downloading......

yimingkeji
昨天
5
0
Akka系统《sixteen》译

Actor是一个封装状态(state)和行为(behavior)的对象,它们只通过交换消息通信(放入收件人邮箱的邮件)。从某种意义上说,Actor是最严格的面向对象编程形式,但它更适合将他们视为人:在与Act...

woshixin
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部