文档章节

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

南寻
 南寻
发布于 2017/02/15 20:59
字数 1013
阅读 61
收藏 0
点赞 0
评论 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}匹配一个或两个或三个数字)

© 著作权归作者所有

共有 人打赏支持
南寻
粉丝 61
博文 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
Django学习--003--视图

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

clgo
2016/04/26
31
0
第11章 通用视图

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

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

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

阿帆提
2016/11/10
3
0
《Django企业开发实战》大纲-草稿

《Django企业开发实战》大纲-草稿 the5fire的技术博客2017-07-2016 阅读 在国内写技术书籍可能是件吃力不讨好的事情,弄不好还会被骂,所以大部分有能力写书的人,不想在这个上面花那么多时间...

the5fire的技术博客
2017/07/20
0
0
python入门系列之(三) 初识Django

我是边看Django相关文档边整理的这篇博客,相当于学习笔记,写的有点乱,如果你已经了解Django开发,就不用看了,不过这里还是涉及到了一点Django的设计思路,对理解Django还是有些好处的,文...

疑似一僧
2014/03/21
0
0
Django学习笔记----快速入门

上一篇>Django学习笔记----环境搭建基于Windows 开始第一个Django项目 进入Cmder, 进入想创建工程的文件夹, 键入 注意不能选择这样的项目名称, 会于Python已有的模块名称冲突 生成成功后, 可...

fesoncn
2017/12/27
0
0
Django学习--004--模版

本节仍然使用上篇文章已经创建的app。总体概览大概如下: 1. 建立模版文件夹 首先在app文件目录下新建一个templates文件夹存放模版文件,模版文件夹中新建一个index.html文件,新建后的文件目...

clgo
2016/04/26
13
0
第七章 表单

第七章 表单 从Google的简朴的单个搜索框,到常见的Blog评论提交表单,再到复杂的自定义数据输入接 口,HTML表单一直是交互性网站的支柱。 本章介绍如何用Django对用户通过表单提交的数据进行...

阿帆提
2016/11/10
4
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

NNS域名系统之域名竞拍

0x00 前言 其实在官方文档中已经对域名竞拍的过程有详细的描述,感兴趣的可以移步http://doc.neons.name/zh_CN/latest/nns_protocol.html#id30 此处查阅。 我这里主要对轻钱包开发中会用到的...

暖冰
今天
0
0
32.filter表案例 nat表应用 (iptables)

10.15 iptables filter表案例 10.16/10.17/10.18 iptables nat表应用 10.15 iptables filter表案例: ~1. 写一个具体的iptables小案例,需求是把80端口、22端口、21 端口放行。但是,22端口我...

王鑫linux
今天
0
0
shell中的函数&shell中的数组&告警系统需求分析

20.16/20.17 shell中的函数 20.18 shell中的数组 20.19 告警系统需求分析

影夜Linux
今天
0
0
Linux网络基础、Linux防火墙

Linux网络基础 ip addr 命令 :查看网口信息 ifconfig命令:查看网口信息,要比ip addr更明了一些 centos 7默认没安装ifconfig命令,可以使用yum install -y net-tools命令来安装。 ifconfig...

李超小牛子
今天
1
0
[机器学习]回归--Decision Tree Regression

CART决策树又称分类回归树,当数据集的因变量为连续性数值时,该树算法就是一个回归树,可以用叶节点观察的均值作为预测值;当数据集的因变量为离散型数值时,该树算法就是一个分类树,可以很...

wangxuwei
昨天
1
0
Redis做分布式无锁CAS的问题

因为Redis本身是单线程的,具备原子性,所以可以用来做分布式无锁的操作,但会有一点小问题。 public interface OrderService { public String getOrderNo();} public class OrderRe...

算法之名
昨天
10
0
143. Reorder List - LeetCode

Question 143. Reorder List Solution 题目大意:给一个链表,将这个列表分成前后两部分,后半部分反转,再将这两分链表的节点交替连接成一个新的链表 思路 :先将链表分成前后两部分,将后部...

yysue
昨天
1
0
数据结构与算法1

第一个代码,描述一个被称为BankAccount的类,该类模拟了银行中的账户操作。程序建立了一个开户金额,显示金额,存款,取款并显示余额。 主要的知识点联系为类的含义,构造函数,公有和私有。...

沉迷于编程的小菜菜
昨天
1
0
从为什么别的队伍总比你的快说起

在机场候检排队的时候,大多数情况下,别的队伍都要比自己所在的队伍快,并常常懊悔当初怎么没去那个队。 其实,最快的队伍只能有一个,而排队之前并不知道那个队快。所以,如果有六个队伍你...

我是菜鸟我骄傲
昨天
1
0
分布式事务常见的解决方案

随着互联网的发展,越来越多的多服务相互之间的调用,这时候就产生了一个问题,在单项目情况下很容易实现的事务控制(通过数据库的acid控制),变得不那么容易。 这时候就产生了多种方案: ...

小海bug
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部