欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

web.py--1

程序员文章站 2022-03-17 14:59:03
...

web.py

web.py 是一个轻量级Python web框架,它简单而且功能强大。web.py是一个开源项目。该框架由已故美国作家、Reddit联合创始人、RSS规格合作创造者、著名计算机黑客Aaron Swartz开发

安装web.py

下载web.py包

需要注意的是python27和python3.0对应的web.py版本不一样

web.py下载地址

在线安装

cmd命令输入:
pip install web.py

离线安装web.py

  1. 将下载的解压缩后

web.py--1

  1. 将所有文件复制粘贴到python安装目录
    Python\Python36\Lib\site-packages
    会提示覆盖文件,直接默认确定即可

  2. cmd命令行
    输入 python setup.py install
    然后会自动安装

第一个webapp

# 导入web模块
import web

# URl映射 使用正则表达式进行映射相关的对象和方法
# 'index','index':表示对应index的class
urls = (
        '/(.*)','hello'
        )

app = web.application(urls,globals())

class index:
    def GET(self):
        return "this is index"

# 模糊匹配blog
class blog:
    def GET(self):
        return "this is blog"

class hello:
    def GET(self,name):
        return "hello!"



if __name__ == '__main__':
    app.run()

在浏览器输入:http://127.0.0.1:8080/index
将会进入页面并显示”hello!”

更改端口号

web.py默认端口号是8080,的你是由于我电脑上安装了tomcat服务器也是8080,所以改成了8089

修改的方法:

  1. 在web.py的安装目录下,即Python\Python36\Lib\site-packages\web下面找到net.py
  2. 使用记事本打开该文件(我用的是notpad++)在
    85行:def validip(ip, defaultaddr="0.0.0.0", defaultport=8080):这一行的defaultport修改为8089重新运行python的web程序就好了。

url映射

在测试web.py的时候用到了一个urls的元组,里面存放了两个值urls = ( '/(.*)','hello' )
其中(/.*)是正则表达式,表示浏览器请求的路径,后面的'hello'是映射的处理类
在程序下面有一个class hello:的类使用def GET(self):...方法进行请求处理。

看到这里我们大概清楚web.py的运行原理了,那就是在元组中,第一个参数是url请求路径,第二个参数是处理请求的对应类
如果我们修改对应的请求路径和处理类,可以得到我们想要处理自定义请求的效果。

测试代码:

# 导入web模块
import web

# URl映射 使用正则表达式进行映射相关的对象和方法
# 'index','index':表示对应index的class
urls = (
        '/index','index',      # 精准匹配
        '/blog/\d+','blog',    # 模糊匹配使用正则
        '/(.*)','hello'        # 注意此处的是默认匹配,当之前的匹配都不存在的时候,进行该匹配,该匹配不能放在前面否则会覆盖
        )

app = web.application(urls,globals())

# index 映射
class index:
    def GET(self):
        return "this is index"

# 模糊匹配blog
class blog:
    def GET(self):
        return "this is blog"

class hello:
    def GET(self,name):
        index = open(r'test.html','r').read()
        return index



if __name__ == '__main__':
    app.run()

测试页面test.html:

<html>
<head>
<title>Test.html</title>

<style type="text/css">
div{width:100px;height:100px;border:1px red solid;}
div:hover{
width:105px;height:105px;
}

</style>
</head>
<body>
<h1>Hello!</h1>
<div></div>
</body>
</html>

测试结果

当我们在浏览器输入对应的请求地址时,程序会进行对应的处理
例如:
- 我们输入:http://127.0.0.1:8080/index浏览器或返回一个页面显示this is index
- 输入:http://127.0.0.1:8080/blog/123的时候浏览器返回this is blog
- 当我们什么都不输入的时候会执行默认的hello处理,此时返回读取的指定的html页面内容

需要注意:
我们在定义urls元组的时候默认的'(.*)','hello'要放在最后,否则会覆盖自定义的映射。

request请求

处理request请求有两个方法

  1. 请求参数获取:
    web.input()

  2. 请求头获取:
    web,ctx.env

测试代码;

import web

# url 映射
urls = ('/index','index','/blog/\d+','blog','/(.*)','hello')

# 创建webapp对象
app = web.application(urls,globals())

# 映射的处理函数
class hello:
    def GET(self,name):
        return open('1.html','r').read()

class index:
    def GET(self):
        return web.input()

class blog:
    def GET(self):
        return web.input()
    def POST(self):
        return web.input()

# main 函数运行webapp
if __name__ == '__main__':
    app.run()

1.html:

<html>
    <head>
        <title>1.html</title>
    </head>
    <body>
        <form method="post" action="/blog/123">
            name:<input type="text" name="name" />
            passwd:<input type="password" name="passwd" />
            <input type="submit" value="submit"/>
        </form>
    </body>
</html>

注意此处的1.html文件中的form表单定义了action/blog/123而且该请求是post请求

测试:

  1. 输入:http://127.0.0.1:8089/index?name=bart&&age=15
    web.py--1

  2. 输入:http://127.0.0.1:8089/
    web.py--1
    点击确认测试post请求
    web.py--1

相关标签: python web-py

推荐阅读