一、基本应用

1.1 Hello World!

# coding:utf-8

import web

urls = (
"/.*", "Tk_online"
) app = web.application(urls, globals()) class Tk_online(object): def GET(self):
return "Hello World!" if __name__ == "__main__":
app.run()

1.2 提供静态文件

在当前应用的目录下创建static目录,将需要提供访问的静态文件放里面即可,比如JS,CSS等静态文件。

直接访问http://localhost/static/ 默认返回static里面的index.py文件

直接访问http://localhost/static/logo.png 将访问到logo.png这个文件

1.3 URL控制

web.py的URL控制模式是简单的、强大的、灵活的。在每个应用的最顶部,你通常看到整个URL调度模式被定义到元祖中:

urls = (
"/online/?", "online",
"/log", "log",
"/timer", "timer"
)

你可以捕捉URL的参数,然后用在处理类中:

"/users/list/(.+)", "list_users"

在list/后面这块儿会被捕捉然后作为参数用在GET或POST:

class list_user(object):

    def GET(self):
return "Listing info about user: {0}".format(name)

同样,后端获取前端的参数也可以用web.input()获取。
开发子应用的时候需要注意:

为了更好的控制大型web应用,web.py支持子应用。在为子应用设计URL模式的时候,记住去的路经是父应用剥离后的。

比如:你在主应用定义了URL "/blog"跳转到"blog"子应用,那么你在子应用中的所有URL都是以"/"开头的,而不是"/blog"。

完整应用路径如下:

webdemo
blog
blog.py
__init__.py
Main.py

Main.py文件

import web
from blog import blog urls = (
"/blog", blog.app # 注意,这里的blog是blog.py的blog
) app = web.application(urls, globals()) if __name__ == "__main__":
app.run()

blog.py文件

import web

urls = (
"/namelist", "Namelist"
) app = web.application(urls, globals()) class Namelist(object):
def GET(self):
return "hello"

1.4 跳转(seeother)和重定向(redirect)

class SamePage(object):
def GET(self):
return web.seeother("/namelist")

注意:web.seeother和web.redirect不支持0.3以下版本。

# seeother和redirect的区别
seeother和redirect似乎可以做同样的事情,但通常来说,redirect并不太友好。
因为redirect发送的是301消息——这是永久重定向。因为大多数Web浏览器会缓存新的重定向,所以当我们再次执行该操作时,会自动访问重定向的新网址。
很多时候,这不是我们所想要的结果。所以在提交表单时,尽量使用seeother。
但是在下面要提交的这种场合,用redirect确实对恰当的:我们已经改变了网站的网址结构,但是仍想让用户书签/收藏夹中的旧网址不生效。

1.5 使用子应用

# 子应用 blog.py

import web

urls = (
"", "reblog",
"/(.*)", "blog"
)

app_blog = web.application(urls, globals()) class reblog:
def GET(self):
raise web.seeother("/") class blog:
def GET(self, path):
return "blog" + path
# 主应用 code.py

import web
import blog urls = (
"/blog", blog.app_blog,
"/(.*)", "index"
) class index:
def GET(self, path):
return "hello" + path app = web.application(urls, globals()) if __name__ == "__main__":
app.run()

1.6 提供XML访问

根据要访问的XML文件(如response.xml)创建一个XML模板。如果XML中有变量,就使用相应的模板标签进行替换。

下面是一个例子:

$def with(code)
<?xml version="1.0">
<RequestNotification-Response>
<Status>$code</Status>
</RequestNotification-Response>

为了提供这个XML,需要创建一个单独的web.py程序(如response.py),他要包含下面的代码。

注意:要用"web.header('Content-Type', 'text/xml')"来告知客户端——正在发送的是一个XML文件。

import web

render = web.template.render('templates/', cache=False)

urls = (
"/(.*)", "index"
) app = web.application(urls, globals()) class index:
def GET(self, code):
web.header("Content-Type", "text/xml")
return render.index(code) web.webapi.internalerror = web.debugerror if __name__ == "__main__":
app.run()

1.7 从post读取原始数据

class RequestHandler:
def POST(self):
data = web.data() # 通过这个方法可以取到数据

第一章内容结束!

web.py框架之基本应用的更多相关文章

  1. 【Python】【Web.py】详细解读Python的web.py框架下的application.py模块

    详细解读Python的web.py框架下的application.py模块   这篇文章主要介绍了Python的web.py框架下的application.py模块,作者深入分析了web.py的源码, ...

  2. web.py框架入门

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

  3. Web.py 框架学习笔记 - URL处理

    最近由于工作需要开始学习基于python的web应用框架web.py.为了方便学习,将学习心得逐日记下以便日后复习. URL 模板: web.py提供了一套url处理的模板,在python工程中,只需 ...

  4. web.py框架之高级应用

    二.高级应用 2.1 web.ctx 获取客户端信息,比如:来源页面.客户端浏览器类型等. web.ctx基于 threadeddict类,又被叫做 ThreadDict.这个类创建了一个类似字典(d ...

  5. web.py框架之i18n支持

    问题: 在web.py的模板文件中, 如何得到i18n的支持? Solution: 项目目录结构: proj/ |- code.py |- i18n/ |- messages.po |- en_US/ ...

  6. Web.py 框架学习笔记 - ctx

    摘要: ctx用于存取web请求的环境变量,基于ThreadedDict类进行实例化.ThreadedDict类可实例化字典类型的对象,该对象某些属性可用于存取处理线程的id. 这样字典化实例的线程池 ...

  7. (转)Nginx + uwsgi + web.py + MySQLdb

    一.背景知识: Web服务器上有多种方式运行Python: 传统上的CGI方式:基本已被淘汰 mod_python的模块方式:仍在广泛使用,但生产环境中也被逐步淘汰 uwsgi方式:目前生产环境下最受 ...

  8. python web.py操作mysql数据库,实现对数据库的增删改查操作

    使用web.py框架,实现对mysql数据库的增删改查操作: 该示例代码中连接的是本地数据库testdb,user表,表结构比较简单,只有两个字段:mobile和passwd,类型均为字符型 实际应用 ...

  9. python web.py实现简单的get和post请求

    使用web.py框架,实现简单的get和post请求: py文件名:mytest.py import web urls = ( '/', 'hello' ) app = web.application ...

随机推荐

  1. fzu1062 洗牌问题(思路模拟)

    http://acm.fzu.edu.cn/problem.php?pid=1062 一开始想暴力找规律,没看出来..然后开始推,推测根据1再次返回第一个的时候顺序也复原,然后想以此推导出一个规律公式 ...

  2. 如何移除HTML5 input在type="number"时的上下小箭头

      在chrome下: input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{    -webkit-appearance ...

  3. C#多线程技术提高RabbitMQ消费吞吐率

    一.课程介绍 本次分享课程属于<C#高级编程实战技能开发宝典课程系列>中的第二部分,阿笨后续会计划将实际项目中的一些比较实用的关于C#高级编程的技巧分享出来给大家进行学习,不断的收集.整理 ...

  4. wireshark解析自定义的protobuf协议

    先看最终效果 wireshark是开源的,而且在Windows下安装时用的是64位,所以相应的库文件需要使用64位. 一个Lua插件的Dissector结构大致如下: do -- 协议名称为 m_Me ...

  5. .net core使用配置文件

    .net core使用配置文件 在 .net core中,配置文件的读取是通过IConfiguration来提供的,程序集是Microsoft.Extensions.Configuration,对应的 ...

  6. 【Google设计冲刺】一种适合于创新小组的协作方式

    传统的产品闭环是1.产品策划-2.研发-3.上线-4.等待市场反馈,4个步骤.对于一个创新项目来说,试错成本过高,等待周期过长[注释1].那么,有没有一种适合创新项目的协作方式呢?谷歌风投杰克·纳普发 ...

  7. 需要看源码的java类

    1.数据结构相关的类,如String.ArrayList,LinkedList,HashMap和ConcurrentHashMap等等.2.线程并发相关的类,如Synchronized.Reentra ...

  8. 【Linux】使用Google Authenticator 实现ssh登录双因素认证

    一般来说,使用ssh远程登录服务器,只需要输入账号和密码,显然这种方式不是很安全.为了安全着想,可以使用GoogleAuthenticator(谷歌身份验证器),以便在账号和密码之间再增加一个验证码, ...

  9. asp.net中WebResponse 跨域访问示例

    前两天,一个朋友让我帮他写这样一个程序:在asp.net里面访问asp的页面,把数据提交对方的数据库后,根据返回的值(返回值为:OK或ERROR),如果为OK再把填入本地数据库.当时,想当然,觉得很简 ...

  10. Mathematica 11.1.0 下载及注册流程

    新版本注册机: http://files.cnblogs.com/files/dabaopku/Mathematica_11.1.0_Keygen.exe.zip 类似于11.0, 在控制台运行, 比 ...