官方首页:http://webpy.org/)

它的源代码非常整洁精干,学习它一方面可以让我们快速了解python语法(遇到看不懂的语法就去google),另一方面可以学习到python高级特性的使用(譬如反射,装饰器),而且在webpy中还内置了一个简单HTTP服务器(文档建议该服务器仅用于开发环境,生产环境应使用apache之类的),对于想简单了解下HTTP服务器实现的朋友来说,这个是再好不过的例子了(并且在这个服务器代码中,还可以学习到线程池,消息队列等技术),除此之外webpy还包括模板渲染引擎,DB框架等等,这里面的每一个部分都可以单独拿出来学习.

在JavaWeb开发中有Servlet规范,那么Python Web开发中有规范吗?

答案就是:WSGI,它定义了服务器如何与你的webapp交互

关于WSGI规范,可以参看下面这个链接:

http://ivory.idyll.org/articles/wsgi-intro/what-is-wsgi.html(非常好的web.py源码学习:

安装:

安装web.py, 请先下载:

http://webpy.org/static/web.py-0.37.tar.gz

或者获取最新的开发版:

https://github.com/webpy/webpy/tarball/master

解压并拷贝 web 文件夹到你的应用程序目录下。 或者,为了让所有的应用程序都可以使用,运行:

python setup.py install (

注意: 在某些类unix系统上你可能需要切换到root用户或者运行:

sudo python setup.py install

另外一个选择是使用Easy Install. Easy Install 使用如下:

easy_install web.py

sudo pip install web.py我下的是0.37版本。

建立一个hello.py:

importweb

urls= ('/hello', 'hello',

)classhello(object):defGET(self):return 'hello world'

if __name__ == "__main__":

app=web.application(urls, globals())

app.run()

urls是映射规则(类似servlet映射)。hello是请求处理。

运行该文件:

python hello.py

我运行报错:

F:\pythonSource>python webpyFirst.py

Traceback (most recent call last):

File "webpyFirst.py", line 12, in

app.run()

File "D:\ProgramFiles\python2.7\lib\site-packages\web\application.py", line 31

3, in run

return wsgi.runwsgi(self.wsgifunc(*middleware))

File "D:\ProgramFiles\python2.7\lib\site-packages\web\wsgi.py", line 55, in ru

nwsgi

server_addr = validip(listget(sys.argv, 1, ''))

File "D:\ProgramFiles\python2.7\lib\site-packages\web\net.py", line 108, in va

lidip

if validip6addr(ip): return (ip,port)

File "D:\ProgramFiles\python2.7\lib\site-packages\web\net.py", line 33, in val

idip6addr

socket.inet_pton(socket.AF_INET6, address)

AttributeError:'module' object has no attribute 'inet_pton'

解决方法,修改Python安装目录下Lib\site-packages\web\net.py文件的第32到第35行:

(原来的是:

try:

socket.inet_pton(socket.AF_INET6, address)exceptsocket.error:return False

)

改成:

try:

socket.inet_pton(socket.AF_INET6, address)except:return False

改正后运行下面的命令:

F:\pythonSource>python webpyFirst.py

http://0.0.0.0:8080/

输入网址http://0.0.0.0:8080/ 可是访问不了,网上搜了下可以指定ip:host,例如python hello.py 127.0.0.1:1234 即可正常访问。

输入:

127.0.0.1:1234/hello

即可输出hello world.

后来发现,不指定参数,直接用localhost也可以访问:

任何网站最重要的部分就是它的URL结构。你的URL并不仅仅只是访问者所能看到并且能发给朋友的。它还规定了你网站运行的心智模型。在一些类似del.icio.us的流行网站 , URL甚至是UI的一部分。 web.py使这类强大的URL成为可能。

在开始你的web.py程序之前,打开一个文本文件(文件名为code.py)输入:

import web

这条语句会导入web.py模块。

现在我们需要把我们的URL结构告诉web.py。让我从下面这个简单的例子开始:

urls = (

'/', 'index'

)

第一部分是匹配URL的正则表达式,像/、/help/faq、/item/(\d+)等(\d+将匹配数字)。圆括号表示捕捉对应的数据以便后面使用。第二部分是接受请求的类名称,像index、view、welcomes.hello (welcomes模块的hello类),或者get_\1。\1 会被正则表达式捕捉到的内容替换,剩下来捕捉的的内容将被传递到你的函数中去。

这行表示我们要URL/(首页)被一个叫index的类处理。

现在我们需要创建一个列举这些url的application。

app = web.application(urls, globals())

这会告诉web.py去创建一个基于我们刚提交的URL列表的application。这个application会在这个文件的全局命名空间中查找对应类。

code.py:

importweb

urls=('/', 'index')classindex:defGET(self):return "Hello, world!"

if __name__ == "__main__":

app=web.application(urls, globals())

app.run()

模板

在 Python 中写 HTML 不是聪明的选择,相反在 HTML 中写 Python 则有趣的多。幸运的是,web.py 让这件事情做得简单而又漂亮。

注意: 老版本的 web.py 使用 Cheetah 模板系统,你可以也欢迎使用其他模板系统,但它可能不会被长久支持。

给模板新建一个目录(命名为 templates),在该目录下新建一个以 .html 结尾的文件,内容如下:

Hello, world!

你也可以在模板中使用 web.py 模板支持代码:

$def with (name)

$if name:

I just wanted to say hello to $name.

$else:

Hello, world!

如上,该模板看起来就像 python 文件一样,除了顶部的 def with (表示从模板将从这后面取值)和总是位于代码段之前的$。当前,template.py 首先请求模板文件的首行 $def 。当然,你要注意 web.py 将会转义任何任何用到的变量,所以当你将 name 的值设为是一段 HTML 时,它会被转义显示成纯文本。如果要关闭该选项,可以写成 $:name 来代替 $name。

回看再看 code.py。在第一行之下添加:

render = web.template.render('templates/')

这会告诉web.py到你的模板目录中去查找模板。然后把 index.GET改成: 告诉 web.py 在你的模板目录下查找模板文件。修改 index.GET :

name = 'Bob'

return render.index(name)

('index' 是模板的名字,'name' 是传入模板的一个参数)

访问站点它将显示 hello Bob。

但是如果我们想让用户自行输入他的名字,么办?如下:

i = web.input(name=None)

return render.index(i.name)

访问 / 将显示 hello world,访问 /?name=Joe 将显示 hello Joe。

URL 的后面的 ? 看起来不好看?修改下 URL 配置:

'/(.*)', 'index'

然后修改下 index.GET:

def GET(self, name):

return render.index(name)

现在访问 /Joe 看看,它会显示 hello Joe。

如果学习更多关于 web.py 的模板处理,请访问 web.py 模板.

python基于web的安装程序_python web.py安装使用相关推荐

  1. Py之cx_Freeze:Python库之cx_Freeze库(程序打包)简介、安装、使用方法详细攻略—案例之实现机器人在线24小时智能翻译

    Py之cx_Freeze:Python库之cx_Freeze库(程序打包)简介.安装.使用方法详细攻略-案例之实现机器人在线24小时智能翻译 导读      将Python程序生成exe程序目前流行这 ...

  2. Wix安装程序中判断是否安装的.net framwork 4.5

    Wix安装程序中判断是否安装的.net framwork 4.5 <PropertyRef Id="NETFRAMEWORK40FULL"/> <Property ...

  3. 计算机系统密码保护,安装程序需要密码、安装程序密码保护的方法

    平时我们使用电脑的过程中,经常需要在网上下载安装一些软件.但是由于大家都懂的原因,现在各大软件厂家疯狂捆绑自己的软件,往往你本来只想安装一款软件,却强行捆绑安装了很多软件,而且还是偷偷在后台安装,导致 ...

  4. 此服务器不支持该安装程序,macOS 提示“不能安装该软件,因为当前无法从软件更新服务器获得” 解决方法...

    原标题:macOS 提示"不能安装该软件,因为当前无法从软件更新服务器获得" 解决方法 有些小伙伴安装苹果开发者工具command line tools时,会提示"不能安 ...

  5. TomCat卸载之后重新装另一个版本的TomCat安装程序的进度条安装到三分之一显示安装失败!!!!!!!!

    问题:TomCat卸载之后重新装另一个版本的TomCat安装程序的进度条安装到三分之一显示安装失败???? 原因:上一次安装的TomCat莫有卸载干净 解决办法: 方法一:打开命令行,输入regedi ...

  6. python在web可以开发吗_Python Web开发

    参考原文 WSGI接口 WSGI(Web Server Gateway Interface)是一个接口,用来屏蔽底部的细节(如TCP的建立连接,HTTP原始请求和响应格式等).WSGI接口定义非常简单 ...

  7. python web开发第三方库_Python Web开发中常用的第三方库

    Python Web开发中常用的第三方库 TL;DR 经常有朋友问,如果用Python来做Web开发,该选用什么框架?用 Pyramid 开发Web该选用怎样的组合等问题?在这里我将介绍一些Pytho ...

  8. python flask web开发 可视化开发_python web开发之——Flask入门教程

    一.安装python2.7(略) 1.Mac下使用python2.7 2.Windows下安装python2.7 从官网下载 双击python2.7,然后选择安装路径,一顿下一步就可以了. 设置环境变 ...

  9. python计算sinx近似值的程序_python编程计算sinx-女性时尚流行美容健康娱乐mv-ida网...

    女性时尚流行美容健康娱乐mv-ida网 mvida时尚娱乐网 首页 美容 护肤 化妆技巧 发型 服饰 健康 情感 美体 美食 娱乐 明星八卦 首页  > 高级搜索 python 字符串,数值 计 ...

最新文章

  1. 20 亿个数字在 4G 内存中如何去重排序:快来试一试 BitMap
  2. Michael I. Jordan——计算思维、推断思维与数据科学
  3. 老旧的金融机构,是时候赶赶云计算的时髦了
  4. 【测试面试题】偶数和奇数
  5. 微信有电脑客户端吗_一个小程序,就能让你用手机控制电脑~
  6. 成功抓取豆瓣读书的所有书籍
  7. 前端学习(2539):节点类型
  8. 关于Object数组强转成Integer数组的问题:Ljava.lang.Object; cannot be cast to [Ljava.lang.Integer;...
  9. 用putty玩linux的时候由于以前用window 习惯写完东西按一下ctrl+s 保存
  10. 讯飞离线语音命令词+TTS离线发音,实现命令词交互(windows dll for unity插件)
  11. 吉首大学校赛 A SARS病毒 (欧拉降幂)
  12. 【随机过程】【研究生考试专用】备考笔记/知识点整理
  13. GHostNet网络最通俗易懂的解读【不接受反驳】
  14. RuoYi-Vue部署服务器流程
  15. Ubuntu下安装RabbbitVCS(图形化svn管理工具)-- Ubuntu也有TortoiseSVN
  16. 《逆袭进大厂》第十五弹之智力情景题 | 个人博客
  17. valgrind的使用、原理
  18. Ubuntu系统Pycharm输入中文时有下划线解决办法
  19. Jsp页面获取session
  20. 配置NHibernate

热门文章

  1. 从网络安装debian到使用中遇到的问题
  2. C++中using的四大用法总结
  3. C语言:编求阶乘函数
  4. 百度分享自定义分享案例
  5. 华为p20Pro投屏电脑 手机投屏电脑教程
  6. 信息时代的管理信息系统
  7. LayUi数据表格数据太多导致下拉框卡顿问题
  8. inet_ntoa() inet_aton()
  9. javascript高级编程教程,javascript基础入门案例
  10. CAJ转换为PDF+英语文献翻译