• web.py小记


    what's the web.py

      相比于 Django 和 Flask,web.py 是轻量到不能再轻量的 web 框架,所有的功能都需要自己实现,所有不适合中大型 web 的开发,不过对于简单的 api 服务或 web 展示,倒是很友好。

    安装

    pip install web.py==0.40-dev1 # 一定要加==后面的dev,版本号一般选最新的

    快速开始

    import web
          
    # url  
    urls = (
        '/(.*)', 'hello'
    )
    
    # 生成一个app
    app = web.application(urls, globals())
    
    # url映射的视图函数接受
    class hello:    
        # GET方法    
        def GET(self, name):
            if not name: 
                name = 'World'
            return 'Hello, ' + name + '!'
        # POST方法    
        def POST(self, name):
            if not name: 
                name = 'World'
            return 'Hello, ' + name + '!!!'
        
    
    if __name__ == "__main__":
        app.run()

    此时运行这个文件,浏览器访问localhost:8080就可以得到hello world的页面(端口默认为8080) 

    URL 映射

    URL映射有3种类型:

    1. URL完全匹配
      '/index','Index' # 由Index类处理 http://127.0.0.1:8080/index


    2. URL模糊匹配
      '/post/d+','Post' # 由Post类处理 如http://127.0.0.1:8080/post/3,post/后面带一个数字的URL
    3. URL带组匹配
      '/post2/(d+)','Post2' # Post2类处理 如http://127.0.0.1:8080/post2/3,post2/后面带一个数字的URL,Post2类会接受处理url post2后面的参数。而模糊匹配的方式是不处理参数的


    调试

      web.py 本身提供调试的工具。在最后的“if name …” 代码前面添加:
    web.webapi.internalerror = web.debugerror
     

      并在最后的“if name …” 添加”web.reloader“:

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

      调试的阶段能得到更多有用的信息。web.reloader 其实是一个中间件,在运行时如果修改了py文件,web.reloader 会重新加载文件,在浏览器上立刻可以看到变化。不过变化较大时最好还是需要重新启动服务器。web.py 也提供web.profiler ,可以输出有用的信息,有关每个页面的每个函数调用的次数,有助于改善代码。

    跨域

      web.py默认是不支持跨域请求的,解决方法是加一个钩子

    # 实现一个函数
    def customhook():
        web.header('Access-Control-Allow-Origin', '*')
        web.header('Access-Control-Allow-Headers', 'Content-Type, Access-Control-Allow-Origin, Access-Control-Allow-Headers, X-Requested-By, Access-Control-Allow-Methods') # 自己生命的请求头中加的东西都放到这个字符串里来
        web.header('Access-Control-Allow-Methods', 'POST, GET, PUT, DELETE')
    
    
    app.add_processor(web.loadhook(customhook))

      同时在视图函数中实现一个 OPTIONS 方法

    def OPTIONS(self):
            pass

                             

  • 相关阅读:
    iOS image.size大小实际输出的值跟图片像素的关系
    iOS 记录蓝牙传输相关进制转换/字节转换/NSData转换/大小端转换
    Objective-C 中Socket常用转换机制(NSData,NSString,int,Uint8,Uint16,Uint32,byte[])
    ios-如何将UIColor RGB颜色转换为uint32_t值
    iOS 多国语言判断
    android 通过WIFI调试和adb指令推送文件到安卓设备
    iOS ViewController跳转界面的几种方法简单总结
    整理汇总能够提升文字工作效率的工具app分享给大家
    js 把字符串转换成数组,数组去重后再转成字符串
    我和朋友写的《Go语言从基础到中台微服务实战开发》已出版在京东,当当上可以购买了
  • 原文地址:https://www.cnblogs.com/zhuminghui/p/11325700.html
Copyright © 2020-2023  润新知