转自:http://blog.csdn.net/caleng/article/details/5712850
一、web.py简介
web.py是一款轻量级的python web开发框架,简单、高效、学习成本低,特别适合作为python web开发的入门框架。官方站点:http://webpy.org/
二、web.py安装
1、下载:http://webpy.org/static/web.py-0.33.tar.gz
2、解压并进入web.py-0.33目录,安装:python setup.py install
三、创建简易博客
1、目录说明:主目录blog/,模板目录blog/templates
2、在数据库“test”中创建表“entries”
- CREATETABLEentries(
- idINTAUTO_INCREMENT,
- titleTEXT,
- contentTEXT,
- posted_onDATETIME,
- primarykey(id)
- );
3、在主目录创建blog.py,blog/blog.py
- importweb
- importmodel
- urls=(
- '/','Index',
- '/view/(/d+)','View',
- '/new','New',
- '/delete/(/d+)','Delete',
- '/edit/(/d+)','Edit',
- '/login','Login',
- '/logout','Logout',
- )
- app=web.application(urls,globals())
- t_globals={
- 'datestr':web.datestr,
- 'cookie':web.cookies,
- }
- render=web.template.render('templates',base='base',globals=t_globals)
- login=web.form.Form(
- web.form.Textbox('username'),
- web.form.Password('password'),
- web.form.Button('login')
- )
- classIndex:
- defGET(self):
- login_form=login()
- posts=model.get_posts()
- returnrender.index(posts,login_form)
- defPOST(self):
- login_form=login()
- iflogin_form.validates():
- iflogin_form.d.username=='admin'/
- andlogin_form.d.password=='admin':
- web.setcookie('username',login_form.d.username)
- raiseweb.seeother('/')
- classView:
- defGET(self,id):
- post=model.get_post(int(id))
- returnrender.view(post)
- classNew:
- form=web.form.Form(
- web.form.Textbox('title',
- web.form.notnull,
- size=30,
- description='Posttitle:'),
- web.form.Textarea('content',
- web.form.notnull,
- rows=30,
- cols=80,
- description='Postcontent:'),
- web.form.Button('Postentry'),
- )
- defGET(self):
- form=self.form()
- returnrender.new(form)
- defPOST(self):
- form=self.form()
- ifnotform.validates():
- returnrender.new(form)
- model.new_post(form.d.title,form.d.content)
- raiseweb.seeother('/')
- classDelete:
- defPOST(self,id):
- model.del_post(int(id))
- raiseweb.seeother('/')
- classEdit:
- defGET(self,id):
- post=model.get_post(int(id))
- form=New.form()
- form.fill(post)
- returnrender.edit(post,form)
- defPOST(self,id):
- form=New.form()
- post=model.get_post(int(id))
- ifnotform.validates():
- returnrender.edit(post,form)
- model.update_post(int(id),form.d.title,form.d.content)
- raiseweb.seeother('/')
- classLogout:
- defGET(self):
- web.setcookie('username','',expires=-1)
- raiseweb.seeother('/')
- defnotfound():
- returnweb.notfound("Sorry,thepageyouwerelookingforwasnotfound.")
- app.notfound=notfound
- if__name__=='__main__':
- app.run()
4、在主目录创建model.py,blog/model.py
- importweb
- importdatetime
- db=web.database(dbn='mysql',db='test',user='root',pw='123456')
- defget_posts():
- returndb.select('entries',order='idDESC')
- defget_post(id):
- try:
- returndb.select('entries',where='id=$id',vars=locals())[0]
- exceptIndexError:
- returnNone
- defnew_post(title,text):
- db.insert('entries',
- title=title,
- content=text,
- posted_on=datetime.datetime.utcnow())
- defdel_post(id):
- db.delete('entries',where='id=$id',vars=locals())
- defupdate_post(id,title,text):
- db.update('entries',
- where='id=$id',
- vars=locals(),
- title=title,
- content=text)
5、在模板目录依次创建:base.html、edit.html、index.html、new.html、view.html
- $defwith(page)
- <html>
- <head>
- <title>MyBlog</title>
- <mce:style><!--
- #menu{
- width:200px;
- float:right;
- }
- --></mce:style><stylemce_bogus="1">#menu{
- width:200px;
- float:right;
- }
- </style>
- </head>
- <body>
- <ulid="menu">
- <li><ahref="/"mce_href="">Home</a></li>
- $ifcookie().get('username'):
- <li><ahref="/new"mce_href="new">NewPost</a></li>
- </ul>
- $:page
- </body>
- </html>
- $defwith(post,form)
- <h1>Edit$form.d.title</h1>
- <formaction=""method="post">
- $:form.render()
- </form>
- <h2>Deletepost</h2>
- <formaction="/delete/$post.id"method="post">
- <inputtype="submit"value="Deletepost"/>
- </form>
- $defwith(posts,login_form)
- <h1>Blogposts</h1>
- $ifnotcookie().get('username'):
- <formaction=""method="post">
- $:login_form.render()
- </form>
- $else:
- Welcome$cookie().get('username')!<ahref="/logout"mce_href="logout">Logout</a>
- <ul>
- $forpostinposts:
- <li>
- <ahref="/view/$post.id"mce_href="view/$post.id">$post.title</a>
- on$post.posted_on
- $ifcookie().get('username'):
- <ahref="/edit/$post.id"mce_href="edit/$post.id">Edit</a>
- <ahref="/delete/$post.id"mce_href="delete/$post.id">Del</a>
- </li>
- </ul>
- $defwith(form)
- <h1>NewBlogPost</h1>
- <formaction=""method="post">
- $:form.render()
- </form>
- $defwith(post)
- <h1>$post.title</h1>
- $post.posted_on<br/>
- $post.content
6、进入主目录在命令行下运行:python blog.py,将启动web服务,在浏览器输入:http://localhost:8080/,简易博客即已完成。
分享到:
相关推荐
Python使用技巧,实战应用...详细介绍了一些Python框架的各种功能和模块,以及如何使用Python进行GUI开发、网络编程和跨平台应用开发等。 适用于初学者和有经验的开发者,能够帮助你快速上手JPython并掌握其高级特性。
简易博客系统,含客户端和服务器端,采用各种编程语言实现. 覆盖语言:Java、Kotlin、Dart、Go、JavaScript(JS)、TypeScript(TS)、ArkTS、Swift、PHP。 覆盖平台:安卓(Java、Kotlin)、iOS(SwiftUI)、Fl…. 软件开发...
Django是高水准的Python编程语言驱动的一个开源模型.视图,控制器风格的Web应用程序框架,它起源于开源社区。使用这种架构,程序员可以方便、快捷地创建高品质、易维护、数据库驱动的应用程序。这也正是OpenStack的...
Django是高水准的Python编程语言驱动的一个开源模型.视图,控制器风格的Web应用程序框架,它起源于开源社区。使用这种架构,程序员可以方便、快捷地创建高品质、易维护、数据库驱动的应用程序。这也正是OpenStack的...
项目概述:本项目是一款基于Python的在线交互教学平台,采用...简而言之,此平台通过现代化的Web技术栈,将Flask的简易性与CodeMirror的强大代码编辑功能相结合,打造出一个高效、直观的Python在线学习和教学环境。
项目采用主流的Python技术栈,适用于有一定编程和Web开发了解的人群,有助于更好地理解和应用该项目。 通过深入研究系统的设计思路、架构和实现细节,您将能够全面了解使用Python构建Web应用程序的方法。源代码不仅...
Python作为一种代表简单主义思想的解释型、面向对象、功能强大的高级编程语言。它语法简洁并且具有动态数据类型和高层次的抽象数据结构,这使得它具有良好的跨平台特性,特别适用于爬虫等程序的实现,此外Python还...
从大学开始玩python到现在参加工作,已经有5年了,现在的公司用到python的项目比较少,最近公司有新项目需要用到python,领导希望我来跟其他同事training,就有了这篇博客,打算将python的training弄成一个简易的...
适用于机器人和自动化项目的简易Python框架。 该框架可在支持Python的所有平台上运行,并具有对Raspberry pi的硬件支持。 将传感器,控制器和其他设备连接到Raspberry PI,并将它们链接到基于Web的仪表板和内部应用...
编程语言和开发技术:如Java、$C++、Python、JavaScript、Ruby等。 数据库技术:如关系型数据库(如MySQL、Oracle、SQL Server)和非关系型数据库(如MongoDB、Redis)等。 前端开发:HTML、CSS、JavaScript等用于...
包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】...
系统后端主要面向的是系统管理员和数据库管理员,系统在开发的过程中力求做到可维护性强和操作简易。作为一个网上交易的平台,也考虑了系统的稳定性、安全性和网络传输的效率,力求做到系统对用户有较好的响应速度。...
和旧版的Python 2.7教程相比,新增内容包括: 新增命名关键字参数的使用; 新增StringIO和BytesIO; 新增datetime的使用; 新增urllib的使用; 新增枚举类型的使用; 新增virtualenv的使用; 新增asyncio编程...
这是一门广受好评的动态编程语言,其灵活和语法简易的特点使得这门语言在脚本工具、数据分析、Web 后端都有广泛的应用。Python 开发社区也非常活跃,3.x 的版本迭代速度非常快。2018 年 6 月底,Python 3.7 问世,...
java简易版开心农场源码 Bai Bookmarks 在线地址: gitee 访问地址(github.io 有时候在国内访问会很慢): 本项目为个人技术收藏集,里面会不定期分享一些作者平时用到的一些库,或者常用的网站和小工具. 如果你有好...
java简易版开心农场源码 back-end技术分享会系列01 后端技术栈 主流的后端技术 Java Python Php C# C++ C Javascript Golang Perl Visual Basic Object Pascal TIOBE 8月编程语言排行1-20 PHP概念 PHP原始为Personal...
simple-todo最早是web.py一个中文教程的例子。后来Uliweb的作者limodou 认为这个教程很不错,于是有了Uliweb版的simple-todo。接着又有了Bottle版和Flask版。这俨然成了一个FrameworksShow项目。既然是...