• web.py开发


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

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

    web.py安装

    安装python

    (1)使用pip

    pip install web.py

     安装的目录Python27Libsite-packages

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

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

    python setup.py install

    查看安装是否成功,pip list

    web.py 测试

    新建hello.py

    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页面

    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映射

      完全匹配

      模糊匹配

      带组匹配

      

    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

    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

    <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>
    

    表单提交后

     

     修改代码获取请求头

    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    

    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

    $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

    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

    $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("/")

    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,通过该方法可以处理百万次的点击

  • 相关阅读:
    HTML转码码表
    【转】javascript 小技巧 JavaScript[对象.属性]集锦
    枯燥的数据库插入修改,投机取巧的方法
    asp.net jquery ajax处理json数据
    .net生成zTree标准形式的json数据源
    SqlDateTime 溢出
    limit 与 offset
    祖国六十大寿阅兵
    Esri for Window Phone 7(一) 加载BingMap
    Create a Settings Page for Windows phone
  • 原文地址:https://www.cnblogs.com/baby123/p/6366852.html
Copyright © 2020-2023  润新知