python web py入门(2)-URL处理

本文介绍URL映射,在介绍映射之前,我们先了解下什么是URL? URL(Uniform/Universal Resource Locator的缩写,统一资源定位符)是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。知道了什么是URL,那么URL映射就好理解。白话说就根据URL的匹配规则去寻找对应的页面。
 
URL由三部分组成:资源类型、存放资源的主机域名、资源文件名。
URL的一般语法格式为:
(带方括号[]的为可选项):
protocol :// hostname[:port] / path / [;parameters][?query]#fragment


hostname(主机名)
是指存放资源的服务器的域名系统(DNS) 主机名或 IP 地址。有时,在主机名前也可以包含连接到服务器所需的用户名和密码(格式:username:password@hostname)。
port(端口号)
整数,可选,省略时使用方案的默认端口,各种传输协议都有默认的端口号,如http的默认端口为80。如果输入时省略,则使用默认端口号。有时候出于安全或其他考虑,可以在服务器上对端口进行重定义,即采用非标准端口号,此时,URL中就不能省略端口号这一项。
path(路径)
由零或多个“/”符号隔开的字符串,一般用来表示主机上的一个目录或文件地址。
parameters(参数)
这是用于指定特殊参数的可选项。
query(查询)
可选,用于给动态网页(如使用CGI、ISAPI、PHP/JSP/ASP/ASP。NET等技术制作的网页)传递参数,可有多个参数,用“&”符号隔开,每个参数的名和值用“=”符号隔开。
fragment(信息片断)
字符串,用于指定网络资源中的片断。例如一个网页中有多个名词解释,可使用fragment直接定位到某一名词解释。


任何网站最重要的部分就是它的URL结构。你的URL并不仅仅只是访问者所能看到并且能发给朋友的,它还规定了你网站运行的实际模型。因此一个网站 , URL的定义,就是成为它的主要部分,URL甚至是UI的一部分。 web.py使这类强大的URL成为可能。
在开始你的web.py程序之前,打开一个文本文件编辑器,然后在这个文件里(文件名为code.py)输入:


import web


这条语句会导入web.py模块。
现在我们需要把我们定义的URL格式告诉web.py。让我们从下面这个简单的例子开始:


urls = (
  '/', 'index'
)


第一部分('/')是匹配URL的正则表达式,像/、/help/faq、/item/(\d+)等(\d+将匹配数字)。圆括号表示捕捉对应的数据以便后面使用。第二部分是接受请求处理的类名称,像index、view、welcomes.hello (welcomes模块的hello类),或者get_\1。\1 会被正则表达式捕捉到的内容替换,剩下来捕捉的的内容将被传递到你的函数中去。
在这里,这行内容表示我们要把URL/(首页)交给一个叫index的类来处理,只要浏览器里输入http://127.0.0.1:8080/,就会把/内容传送到web应用程序,自然就调用index类来处理。
现在我们需要创建一个包含这些url的应用程序:
app = web.application(urls, globals())
这行代码会告诉web.py去创建一个基于我们刚提交的URL列表的WEB应用程序,当收到浏览器的请求就会去这个类里查找对应的类来处理。


上面定义了URL与处理类之间的关系,那么浏览器怎么样来访问呢?
其实浏览器往往采用两个命令GET和POST来访问WEB服务器,那么我们需要在index类定义这两个函数,以便分别处理。
虽然大多数人只会看看,并不会注意你的浏览器在使用用于与万维网通信的HTTP语言。具体的细节并不重要,但是要理解web访问者请求web服务器去根据URL(像/、/foo?f=1)执行一个合适的函数(像GET、POST)的基本思想。
GET是我们都熟悉的,它用于请求网页文本。当你在浏览器输入harvard.edu,它会直接访问Harvard的web服务器,去GET /。 第二个最有名的命令是POST,它经常被用在提交表单form,比如请求买什么东西。每当提交一个去做什么事情(像使用信用卡处理一笔交易)的请求时,你可以使用POST。这是关键,因为GET的URL可以被搜索引擎索引,并通过搜索引擎访问。虽然大部分页面你希望被索引,但是少数类似订单处理的页面你是不希望被索引的 (想象一下Google尝试去购买你网站上的所有东西)。


在我们的web.py的代码中,我们将这两个方法明确区分:


class index:
    def GET(self):
        return "Hello, world!"
当有人用GET请求/时,这个GET函数随时会被web.py调用。


好了,限制我们只需要最后一句就写完了。这行会告诉web.py开始提供web页面:


if __name__ == "__main__": 
    app.run()
这会告诉web.py为我们启动上面我们写的应用。


现在注意,即使我已经在这里说了很多,但我们真正有5行这些代码。这就是你需要编写的一个完整的web.py应用。 为了更方便的使用,你的完整代码应该像下面这样:
import web

urls = (
    '/', 'index'
)

class index:
    def GET(self):
        return "Hello, world!"

if __name__ == "__main__":
    app = web.application(urls, globals())
    app.run()

1) URL完全匹配,格式: /index
解释,在浏览器输入http://localhost:8080/index,那么会完全匹配“/index”这样的页面。
2)URL模糊匹配,格式:/index\d+
解释:这里意思是以"/index"开头,后面跟着一个数字或者多个数字这样的URL进行匹配,例如,浏览器输入:http://localhost:8080/index123 或者http://localhost:8080/index4,这种模糊匹配,一般是需要用到正则表达式。
3)URL带组匹配,格式 /index(\d+)

解释:这个带组匹配和上面模糊匹配好像,就因为在正则表达式外部添加一个括号,就表示匹配一组。

比特币源码入门教程

https://edu.csdn.net/course/detail/6998

深入浅出Matplotlib
https://edu.csdn.net/course/detail/6859

深入浅出Numpy
http://edu.csdn.net/course/detail/6149 

Python游戏开发入门


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

caimouse

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值