`
xidajiancun
  • 浏览: 455921 次
文章分类
社区版块
存档分类
最新评论

Python Web编程 :10分钟创建简易博客

 
阅读更多

转自: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”

[python] view plaincopy
  1. CREATETABLEentries(
  2. idINTAUTO_INCREMENT,
  3. titleTEXT,
  4. contentTEXT,
  5. posted_onDATETIME,
  6. primarykey(id)
  7. );

3、在主目录创建blog.py,blog/blog.py

[python] view plaincopy
  1. #载入框架
  2. importweb
  3. #载入数据库操作model(稍后创建)
  4. importmodel
  5. #URL映射
  6. urls=(
  7. '/','Index',
  8. '/view/(/d+)','View',
  9. '/new','New',
  10. '/delete/(/d+)','Delete',
  11. '/edit/(/d+)','Edit',
  12. '/login','Login',
  13. '/logout','Logout',
  14. )
  15. app=web.application(urls,globals())
  16. #模板公共变量
  17. t_globals={
  18. 'datestr':web.datestr,
  19. 'cookie':web.cookies,
  20. }
  21. #指定模板目录,并设定公共模板
  22. render=web.template.render('templates',base='base',globals=t_globals)
  23. #创建登录表单
  24. login=web.form.Form(
  25. web.form.Textbox('username'),
  26. web.form.Password('password'),
  27. web.form.Button('login')
  28. )
  29. #首页类
  30. classIndex:
  31. defGET(self):
  32. login_form=login()
  33. posts=model.get_posts()
  34. returnrender.index(posts,login_form)
  35. defPOST(self):
  36. login_form=login()
  37. iflogin_form.validates():
  38. iflogin_form.d.username=='admin'/
  39. andlogin_form.d.password=='admin':
  40. web.setcookie('username',login_form.d.username)
  41. raiseweb.seeother('/')
  42. #查看文章类
  43. classView:
  44. defGET(self,id):
  45. post=model.get_post(int(id))
  46. returnrender.view(post)
  47. #新建文章类
  48. classNew:
  49. form=web.form.Form(
  50. web.form.Textbox('title',
  51. web.form.notnull,
  52. size=30,
  53. description='Posttitle:'),
  54. web.form.Textarea('content',
  55. web.form.notnull,
  56. rows=30,
  57. cols=80,
  58. description='Postcontent:'),
  59. web.form.Button('Postentry'),
  60. )
  61. defGET(self):
  62. form=self.form()
  63. returnrender.new(form)
  64. defPOST(self):
  65. form=self.form()
  66. ifnotform.validates():
  67. returnrender.new(form)
  68. model.new_post(form.d.title,form.d.content)
  69. raiseweb.seeother('/')
  70. #删除文章类
  71. classDelete:
  72. defPOST(self,id):
  73. model.del_post(int(id))
  74. raiseweb.seeother('/')
  75. #编辑文章类
  76. classEdit:
  77. defGET(self,id):
  78. post=model.get_post(int(id))
  79. form=New.form()
  80. form.fill(post)
  81. returnrender.edit(post,form)
  82. defPOST(self,id):
  83. form=New.form()
  84. post=model.get_post(int(id))
  85. ifnotform.validates():
  86. returnrender.edit(post,form)
  87. model.update_post(int(id),form.d.title,form.d.content)
  88. raiseweb.seeother('/')
  89. #退出登录
  90. classLogout:
  91. defGET(self):
  92. web.setcookie('username','',expires=-1)
  93. raiseweb.seeother('/')
  94. #定义404错误显示内容
  95. defnotfound():
  96. returnweb.notfound("Sorry,thepageyouwerelookingforwasnotfound.")
  97. app.notfound=notfound
  98. #运行
  99. if__name__=='__main__':
  100. app.run()

4、在主目录创建model.py,blog/model.py

[python] view plaincopy
  1. importweb
  2. importdatetime
  3. #数据库连接
  4. db=web.database(dbn='mysql',db='test',user='root',pw='123456')
  5. #获取所有文章
  6. defget_posts():
  7. returndb.select('entries',order='idDESC')
  8. #获取文章内容
  9. defget_post(id):
  10. try:
  11. returndb.select('entries',where='id=$id',vars=locals())[0]
  12. exceptIndexError:
  13. returnNone
  14. #新建文章
  15. defnew_post(title,text):
  16. db.insert('entries',
  17. title=title,
  18. content=text,
  19. posted_on=datetime.datetime.utcnow())
  20. #删除文章
  21. defdel_post(id):
  22. db.delete('entries',where='id=$id',vars=locals())
  23. #修改文章
  24. defupdate_post(id,title,text):
  25. db.update('entries',
  26. where='id=$id',
  27. vars=locals(),
  28. title=title,
  29. content=text)

5、在模板目录依次创建:base.html、edit.html、index.html、new.html、view.html

  1. <!--base.html-->
  2. $defwith(page)
  3. <html>
  4. <head>
  5. <title>MyBlog</title>
  6. <mce:style><!--
  7. #menu{
  8. width:200px;
  9. float:right;
  10. }
  11. --></mce:style><stylemce_bogus="1">#menu{
  12. width:200px;
  13. float:right;
  14. }
  15. </style>
  16. </head>
  17. <body>
  18. <ulid="menu">
  19. <li><ahref="/"mce_href="">Home</a></li>
  20. $ifcookie().get('username'):
  21. <li><ahref="/new"mce_href="new">NewPost</a></li>
  22. </ul>
  23. $:page
  24. </body>
  25. </html>
  26. <!--edit.html-->
  27. $defwith(post,form)
  28. <h1>Edit$form.d.title</h1>
  29. <formaction=""method="post">
  30. $:form.render()
  31. </form>
  32. <h2>Deletepost</h2>
  33. <formaction="/delete/$post.id"method="post">
  34. <inputtype="submit"value="Deletepost"/>
  35. </form>
  36. <!--index.html-->
  37. $defwith(posts,login_form)
  38. <h1>Blogposts</h1>
  39. $ifnotcookie().get('username'):
  40. <formaction=""method="post">
  41. $:login_form.render()
  42. </form>
  43. $else:
  44. Welcome$cookie().get('username')!<ahref="/logout"mce_href="logout">Logout</a>
  45. <ul>
  46. $forpostinposts:
  47. <li>
  48. <ahref="/view/$post.id"mce_href="view/$post.id">$post.title</a>
  49. on$post.posted_on
  50. $ifcookie().get('username'):
  51. <ahref="/edit/$post.id"mce_href="edit/$post.id">Edit</a>
  52. <ahref="/delete/$post.id"mce_href="delete/$post.id">Del</a>
  53. </li>
  54. </ul>
  55. <!--new.html-->
  56. $defwith(form)
  57. <h1>NewBlogPost</h1>
  58. <formaction=""method="post">
  59. $:form.render()
  60. </form>
  61. <!--view.html-->
  62. $defwith(post)
  63. <h1>$post.title</h1>
  64. $post.posted_on<br/>
  65. $post.content

6、进入主目录在命令行下运行:python blog.py,将启动web服务,在浏览器输入:http://localhost:8080/,简易博客即已完成。

分享到:
评论

相关推荐

    基于python web开发的简易订单系统.zip

    Python使用技巧,实战应用...详细介绍了一些Python框架的各种功能和模块,以及如何使用Python进行GUI开发、网络编程和跨平台应用开发等。 适用于初学者和有经验的开发者,能够帮助你快速上手JPython并掌握其高级特性。

    简易博客系统,含客户端和服务器端,采用各种编程语言实现. .zip

    简易博客系统,含客户端和服务器端,采用各种编程语言实现. 覆盖语言:Java、Kotlin、Dart、Go、JavaScript(JS)、TypeScript(TS)、ArkTS、Swift、PHP。 覆盖平台:安卓(Java、Kotlin)、iOS(SwiftUI)、Fl…. 软件开发...

    基于Django的简易博客.zip

    Django是高水准的Python编程语言驱动的一个开源模型.视图,控制器风格的Web应用程序框架,它起源于开源社区。使用这种架构,程序员可以方便、快捷地创建高品质、易维护、数据库驱动的应用程序。这也正是OpenStack的...

    基于Django 的简易博客.zip

    Django是高水准的Python编程语言驱动的一个开源模型.视图,控制器风格的Web应用程序框架,它起源于开源社区。使用这种架构,程序员可以方便、快捷地创建高品质、易维护、数据库驱动的应用程序。这也正是OpenStack的...

    基于Flask与CodeMirror的Python在线交互教学平台源码

    项目概述:本项目是一款基于Python的在线交互教学平台,采用...简而言之,此平台通过现代化的Web技术栈,将Flask的简易性与CodeMirror的强大代码编辑功能相结合,打造出一个高效、直观的Python在线学习和教学环境。

    Python简易SNMP的管理站工具_(项目源码+数据库脚本+文档+LW+PPT)

    项目采用主流的Python技术栈,适用于有一定编程和Web开发了解的人群,有助于更好地理解和应用该项目。 通过深入研究系统的设计思路、架构和实现细节,您将能够全面了解使用Python构建Web应用程序的方法。源代码不仅...

    Python实现简易Web爬虫详解

    Python作为一种代表简单主义思想的解释型、面向对象、功能强大的高级编程语言。它语法简洁并且具有动态数据类型和高层次的抽象数据结构,这使得它具有良好的跨平台特性,特别适用于爬虫等程序的实现,此外Python还...

    Python基础教程(一)——Windows搭建开发Python开发环境

    从大学开始玩python到现在参加工作,已经有5年了,现在的公司用到python的项目比较少,最近公司有新项目需要用到python,领导希望我来跟其他同事training,就有了这篇博客,打算将python的training弄成一个简易的...

    kervi:用于机器人和自动化项目的基于Python的框架

    适用于机器人和自动化项目的简易Python框架。 该框架可在支持Python的所有平台上运行,并具有对Raspberry pi的硬件支持。 将传感器,控制器和其他设备连接到Raspberry PI,并将它们链接到基于Web的仪表板和内部应用...

    C语言简易游戏Cgame.zip

    编程语言和开发技术:如Java、$C++、Python、JavaScript、Ruby等。 数据库技术:如关系型数据库(如MySQL、Oracle、SQL Server)和非关系型数据库(如MongoDB、Redis)等。 前端开发:HTML、CSS、JavaScript等用于...

    计算机网络Socket编程大作业实现了一个基于局域网通信的简易微信。使用到的技术有Java的Socket编程,数据库.zip

    包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】...

    毕业设计:ASP+ACCESS在线手机销售系统(源代码)

    系统后端主要面向的是系统管理员和数据库管理员,系统在开发的过程中力求做到可维护性强和操作简易。作为一个网上交易的平台,也考虑了系统的稳定性、安全性和网络传输的效率,力求做到系统对用户有较好的响应速度。...

    Python3中类、模块、错误与异常、文件的简易教程

    和旧版的Python 2.7教程相比,新增内容包括: 新增命名关键字参数的使用; 新增StringIO和BytesIO; 新增datetime的使用; 新增urllib的使用; 新增枚举类型的使用; 新增virtualenv的使用; 新增asyncio编程...

    Python 3.8 新功能来一波(大部分人都不知道)

    这是一门广受好评的动态编程语言,其灵活和语法简易的特点使得这门语言在脚本工具、数据分析、Web 后端都有广泛的应用。Python 开发社区也非常活跃,3.x 的版本迭代速度非常快。2018 年 6 月底,Python 3.7 问世,...

    java简易版开心农场源码-bookmarks:书签

    java简易版开心农场源码 Bai Bookmarks 在线地址: gitee 访问地址(github.io 有时候在国内访问会很慢): 本项目为个人技术收藏集,里面会不定期分享一些作者平时用到的一些库,或者常用的网站和小工具. 如果你有好...

    java简易版开心农场源码-back-end:后端技术栈

    java简易版开心农场源码 back-end技术分享会系列01 后端技术栈 主流的后端技术 Java Python Php C# C++ C Javascript Golang Perl Visual Basic Object Pascal TIOBE 8月编程语言排行1-20 PHP概念 PHP原始为Personal...

    在Python的Django框架中simple-todo工具的简单使用

    simple-todo最早是web.py一个中文教程的例子。后来Uliweb的作者limodou 认为这个教程很不错,于是有了Uliweb版的simple-todo。接着又有了Bottle版和Flask版。这俨然成了一个FrameworksShow项目。既然是...

Global site tag (gtag.js) - Google Analytics