web.py小记
2024-08-29 00:52:50
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种类型:
- URL完全匹配
'/index','Index' # 由Index类处理 http://127.0.0.1:8080/index
- URL模糊匹配
'/post/\d+','Post' # 由Post类处理 如http://127.0.0.1:8080/post/3,post/后面带一个数字的URL
- 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
最新文章
- MySQL导入SQL文件及常用命令
- centos 7安装配置bind
- 关于sql注入
- 使用JMeter创建数据库(Mysql)测试
- java生成字符串md5函数类
- C# 调用 C++ dll (类型对照)
- 【转】VC++与MySQL数据库的连接
- 给 Android 初学者的 Gradle 知识普及
- API断点大全
- Nashorn 在JDK 8中融合Java与JavaScript之力
- Javascript闭包与作用域
- Java编程之字符集问题研究
- [Windows编程] #pragma once 和#ifndef ... #define ... #endif 比较
- Git常用操作汇总(转)
- numpy初识
- 守护模式,互斥锁,IPC通讯,生产者消费者模型
- 状压DP天秀
- jQuery 获取不到 kindeditor 内容 的解决方法
- SpringMVC之单/多文件上传
- c#之如何正确地实现IDisposable接口
热门文章
- zabbix--基础概念及原理
- React源码 React ref
- Kotlin匿名函数与闭包详解
- Java并发编程-JUC-CountDownLatch 倒计数门闩器-等待多线程完成再放行 -一次性使用
- Could not resolve com.android.support:design 28.0.0
- 《团队名称》第八次团队作业:Alpha冲刺day3
- 项目Alpha冲刺(团队) -- 总结及汇总
- oracle中删除表:drop、delete、truncate
- spark延迟调度与动态资源管理
- Type Encodings