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

web.py小记的更多相关文章

  1. 在OpenShift上托管web.py应用

    一.背景 最近在学习web.py,跟随官网的cookbook和code examples一路敲敲打打,在本地访问了无数遍http://0.0.0.0:8080/,也算是对web.py有了基本的认识.为 ...

  2. web.py框架入门

    在使用微信搭建公众平台的时候,使用的是web.py这个方便简单的框架,学习一下. 框架文档:http://webpy.org/docs/0.3/tutorial.zh-cn  按照文档的内容写一遍程序 ...

  3. web.py学习心得

    1.注意判断数字时,如果是get传递的参数,一定要用int转换.不然出错. 2.$var 定义时,冒号后的内容不是python内容,需加上$符号.如$var naviId:$naviId. 3.各个模 ...

  4. web.py+html+mysql实现web端小系统的问题汇总

    利用web.py+html(bootstrap)+mysql实现了一个小型的设备管理系统,在这个过程中遇到很多问题,将问题及解决方案总结如下,有遇到类似问题的同学,希望可以帮到你们. 1.关于中文的编 ...

  5. mac OS X 配置Python+Web.py+MySQLdb环境

    MAC默认支持Python 2.7所以不用安装. 1.安装pip sudo easy_install pip 2.安装Web.py sudo pip install Web.py 3.安装MySQLd ...

  6. web.py+mysql插入中文提示query = query.encode(charset) UnicodeEncodeError: 'latin-1' codec can't encode characters in position 86-100

    对于中文编码的问题,总会出现各种各样恶心的错误,还不知道应该怎么解决,首先,你从最开头就应该关注编码问题,尽量保证所有的编码方式都是一致的 用python+web.py+mysql来写程序,首先要保证 ...

  7. Python Web.py

    安装Web.py root@bt:~# sudo pip install web.py Downloading/unpacking web.py Downloading web.py-0.37.tar ...

  8. 迁移web.py项目至git@osc的项目演示平台

    1. 开启演示平台 选择WSGI,输入应用名称,即是演示网页的网址. 2. web.py代码迁移 将Python的site-packages目录下的web文件夹复制到代码目录下,与网页程序在同一个文件 ...

  9. web.py网页模板中使用jquery

    由于$是web.py针对模板的保留字符,所以在模板文件内不能直接使用$("#id")的格式. 解决办法: 1.$$("#id")可以避免$被误解析 2.jque ...

随机推荐

  1. vim 常用命令(记录)

    很好的vim讲解:https://blog.csdn.net/weixin_37657720/article/details/80645991 命令模式:默认模式.输入ctrl+c, 输入:,转换为命 ...

  2. python预课06 基于百度大脑AI的人工智能,百度颜值检测,语音合成与识别

    百度大脑: 如下图,百度开放了许多人工智能接口可以使用,先注册一个百度大脑账户 点击创建应用,选择需要的功能,如人脸识别,语音识别等 点击查看文档,可以查看功能对应语言的方法,参数.首先在CMD命令下 ...

  3. 函数式编程—函数的关系—is-a、has-a、use-a

    is-a:函数的实现与函数类型的关系: has-a:匿名(闭包)函数的创建者与匿名函数的关系:匿名函数与环境和上下文(函数)的关系: use-a:高阶函数与参量函数的关系: 函数式编程的基本功之一就是 ...

  4. Splay&LCT

    Splay && LCT \(\text{Splay}\) 基本操作 1.\(Zig \& Zag\) 其思想是维护中序遍历不变 实现中我们不真的用\(Zig\)或\(Zag\ ...

  5. linux学习10 Linux目录结构和根文件系统全面讲解

    一.回顾 1.如何获取使用帮助 help,--help,man,info 官方文档,自带文档(README,CHANGELOG,INSTALL),官方文档 发行版的文档 Google Linux Ke ...

  6. BZOJ 3048: [Usaco2013 Jan]Cow Lineup 双指针

    看到这道题的第一个想法是二分+主席树(好暴力啊) 实际上不用这么麻烦,用一个双指针+桶扫一遍就行了 ~ code: #include <bits/stdc++.h> #define N 1 ...

  7. A1139 | 玩成模拟题的DFS

    考试的时候有思路了,但是没写完.这题起码要40min写,思路太诡异了. 刚刚写了一段,只过了一个case,得了18分,还行.明日再战. #include <stdio.h> #includ ...

  8. A|G\C003

    AGC003 A Wanna go back home = = https://agc003.contest.atcoder.jp/submissions/7910739 B Simplified m ...

  9. 钠 GZY整理贪心

    目录 CF140C New Year Snowmen CF161B Discounts P1842 奶牛玩杂技 CF140C New Year Snowmen #include <bits/st ...

  10. fork,vfork

    转自 http://blog.csdn.net/todd911/article/details/14062103 1.fork函数 一个现有的进程可以调用fork函数创建一个新的子进程. #inclu ...