web.py开发

 

web.py需要使用python2.X,所以安装python版本2.7.9

web.py 是一个轻量级Python web框架,它简单而且功能强大

web.py安装

安装python

(1)使用pip

pip install web.py

 安装的目录Python27\Lib\site-packages

 

(2) https://github.com/webpy/webpy下载release版本的web.py

下载下来之后,解压,打开cmd,cd到解压目录下,输入

python setup.py install

查看安装是否成功,pip list

web.py 测试

新建hello.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import web
         
urls = (
    '/(.*)', 'hello'
)
app = web.application(urls, globals())
 
class hello:       
    def GET(self, name):
        if not name:
            name = 'World'
        return 'Hello, ' + name + '!'
 
if __name__ == "__main__":
    app.run()

进入保存的目录

python hello.py

在浏览器输入http://127.0.0.1:8080/

命令窗口显示

 第一部分(‘/’)是一个匹配URL 的正则表达式;第二部分(‘index’)是一个类名,匹配的请求将会被发送过去

 若要制定另外的端口使用python code.py 后面添加IP 地址/端口

 如:http://192.168.5.239:8080/aa

 web.py的输出html页面

1
2
3
4
5
6
7
8
9
10
11
12
13
import web
         
urls = (
    '/(.*)', 'hello'
)
app = web.application(urls, globals())
 
class hello:       
    def GET(self, name):
    return open(r'aa.html','r').read()
 
if __name__ == "__main__":
    app.run()

aa.html页面是已有的html页面

web.py学习

1.URL映射

  完全匹配

  模糊匹配

  带组匹配

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import web
         
urls = (
    '/index','index',
    '/blog/\d+','blog',
        '/(.*)', 'hello'
)
app = web.application(urls, globals())
 
class index:
    def GET(self):
        return 'index method'
 
class blog:
    def GET(self):
        return 'blog method'
         
class hello:       
    def GET(self, name):
        if not name:
            name = 'World'
        return 'Hello, ' + name + '!'
 
if __name__ == "__main__":
    app.run()

 

注:

  范围大的要放在后面 

2.请求处理

  请求参数获取

    web.input()

  请求头获取

    web.ctx.env

hello.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import web
         
urls = (
    '/index','index',
    '/blog/\d+','blog',
    '/(.*)', 'hello'
)
app = web.application(urls, globals())
 
class index:
    def GET(self):
        query = web.input()
        return query
 
class blog:
    def POST(self):
        data = web.input()
        return data
         
class hello:       
    def GET(self, name):
        return open(r'hello.html').read()
 
if __name__ == "__main__":
    app.run()

 hello.html

1
2
3
4
5
6
7
8
9
10
11
12
<html>
<head>
    <title>hello</title>
<head>
<body>
 <form action="/blog/123" method="POST">
    <input type="text" name="id" value="" />
    <input type="text" name="name" value="" />
    <input type="submit" value="submit">
 </form>
</body>
</html>

表单提交后

 

 修改代码获取请求头

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import web
         
urls = (
    '/index','index',
    '/blog/\d+','blog',
    '/(.*)', 'hello'
)
app = web.application(urls, globals())
 
class index:
    def GET(self):
        query = web.input()
        return query
 
class blog:
    def POST(self):
        data = web.input()
        return data
    def GET(self):
        data1 = web.ctx.env
        return data1
         
class hello:       
    def GET(self, name):
        return open(r'hello.html').read()
 
if __name__ == "__main__":
    app.run()

  

3.相应处理

  (1)模板文件读取

    render.index("参数")

hello.py    

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import web
 
render = web.template.render("templates")      
urls = (
    '/index','index',
    '/blog/\d+','blog',
      '/(.*)', 'hello'
)
app = web.application(urls, globals())
 
class index:
    def GET(self):
        query = web.input()
        return query
 
class blog:
    def POST(self):
        data = web.input()
        return data
    def GET(self):
        data1 = web.ctx.env
        return data1
         
class hello:       
    def GET(self, name):
        return render.hello1(name)
 
if __name__ == "__main__":
    app.run()

在hello.py同级目录下,存在templates/hello1.html

hello1.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$def with(name)
<html>
<head>
    <title>hello1</title>
<head>
<body>
    <h1>hello1,$name</h1>
    <form action="/blog/123" method="POST">
        <input type="text" name="id" value="" />
        <input type="text" name="name" value="" />
        <input type="submit" value="submit">
    </form>
</body>
</html>

 

  

  (2)结果数据处理

    model.select("sql)

安装已编译版本 下载MySQldb ,安装已编译版本

goods.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import web
import MySQLdb
import MySQLdb.cursors
render = web.template.render("templates")      
urls = (
    '/goods','goods'
)
app = web.application(urls, globals())
 
class goods:
    def GET(self):
        conn = MySQLdb.connect(host='127.0.0.1',user='root',passwd='root',db='mshop_dev',port=3306,charset="utf8",cursorclass=MySQLdb.cursors.DictCursor)
        cur=conn.cursor()
        cur.execute("select * from mshop_goods limit 5")
        r=cur.fetchall()
        cur.close()
        conn.close()
        print r
        return render.goods(r)
 
if __name__ == "__main__":
    app.run()

goods.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$def with(r)
<html>
<head>
    <meta charset="utf-8" />
    <title>goods</title>
<head>
<body>
    <h1>商品列表</h1>
    <ul>
    $for l in r:
        <li>$l.get('goods_id'),$l.get('goods_name')=>$l.get('store_name')<li>
    </ul>
</body>
</html>

  

  (3)URL跳转

    web.seeother("/")

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import web
import MySQLdb
import MySQLdb.cursors
render = web.template.render("templates")      
urls = (
    '/index','index',
    '/goods','goods',
    '/(.*)', 'hello'
)
app = web.application(urls, globals())
 
class index:
    def GET(self):
        return web.seeother("/goods")
 
class goods:
    def GET(self):
        conn = MySQLdb.connect(host='127.0.0.1',user='root',passwd='root',db='mshop_dev',port=3306,charset="utf8",cursorclass=MySQLdb.cursors.DictCursor)
        cur=conn.cursor()
        cur.execute("select * from mshop_goods limit 5")
        r=cur.fetchall()
        cur.close()
        conn.close()
        print r
        return render.goods(r)
 
class hello:       
    def GET(self, name):
        return web.seeother("http://baidu.com")
         
if __name__ == "__main__":
    app.run()

  输入http://127.0.0.1/index跳转到http://127.0.0.1:8080/goods

  输入http://127.0.0.1/hello跳转到https://www.baidu.com/

 

注:

  web.py的静态文件必须放在static文件夹下面

  web.py并不具备部署网站的能力,因此对于web.py程序只能在本地访问,如果要进行部署必须要使用apache、nginx、lighttped

  通过FastCGI结合lighttpd是web.py,通过该方法可以处理百万次的点击

 

posted @   慕尘  阅读(898)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示