原标题:So easy !用 Python 开发一个todolist

有一句话是这样说的:“凡事预则立,不预则废”,说的是我们在做事之前,最好制定好你的计划,然后有序的去执行,这样不会产生过多的错误和不爽,如果什么都不准备的话,人就容易废掉。

今天,你废了么?

为了让我们不要那么快的废掉,要不我们用 Python 来写一个网页版的 todolist, 然后在里面制定自己的计划怎么样?

可能你会想到像这种简单一些的网页交互,可以用 Flask 来实现,不过小帅b今天要给你介绍的是另一个轻量级的 web 框架,它叫 bottle ,知道的人相对较少,但它也是很好用的呢。

我们要在网站里面写入计划内容,就需要用到数据库,我们也可以使用轻量级的 sqlite 数据库实现,这个 Python 有自带的 sqlite3 库。

可以使用它来创建一张 todo 数据表:

其中的 task 字段主要是用来存放用户要添加的计划内容, status 用来标记用户是否完成计划的状态,比如 1 表示未完成, 0 表示已经完成。

可以通过 insert 插入每一条任务的数据:

执行:

这时候在你当前的目录下就会生成一个数据库文件,等会所有的计划数据都存储在这里面:

如果你之前没有安装过 bottle ,可以使用 pip 安装一波,它没有依赖其它的库,安装很快就能搞定。

安装完成之后导入 bottle:

定义路由,当你访问 /todo 首页的时候就会调用这个方法:

这时候可以连接我们刚刚创建数据库,顺便将未完成的任务查找出来,然后将结果返回进行显示:

接着执行服务,你可以自己指定运行在服务器上的什么端口上,这里我指定为 8888 端口:

运行 Python 之后,就可以在浏览器打开:localhost:8888/todo

可以看到,我们刚刚插入的数据显示出来了,说明服务和数据库运行正常。

那么接下来就把数据显示到首页,可以使用 bottle 的模板引擎实现数据的绑定,在当前的目录下创建一个 make_table.tpl 文件。

这里我们使用了 HTML 的模板标记语言,我们可以在刚刚的 Python 文件中将在数据库中得到的结果写到 rows 里面,然后在 make_table模板文件中就可以使用它循环得到相关的数据了:

运行一波:

数据成功绑定。

接下来插入计划的内容,可以使用 bottle 的 request 做 Get 和 Post 请求。

创建一个 new_task.tpl 模板文件:

这里定义了一个 form 表单,让它去请求 new 方法,可以在 py 中定义这个方法,先来展示看看:

运行一波:

那么当用户点击提交的时候,需要将输入框的内容获取,然后保存到数据库中,可以在 new 方法中这样定义:

这里主要是通过 GET.task 来获取输入框的数据,然后将数据插入到数据库中,添加成功后显示一个成功添加的提醒。

运行一下:

可以可以,回到首页可以看到数据确实添加了:

可以添加计划了,接下来要实现的是对计划的编辑,可以让用户选择每条计划是否完成了,以及修改计划的内容:

可以写一个 edit_task.tpl 模板文件来进行数据的展示和提交:

这里的 form 表单绑定的请求是 edit 方法,其中 {{no}} 指的是计划表中的 id,这样就能根据 id 来修改特定的计划数据。

想要在 input 标签中显示相关的计划内容和状态,可以在 py 里面通过数据库获取然后返回,放到 old 参数中,像这样:

而当用户进行编辑操作提交的时候,可以将计划的内容和状态获取过来,然后根据 id 来修改数据库中的计划数据:

在 route 定义那里的 指的是我们要接收一个参数为 no 的 int 类型数据,也就是 id。

运行一波就是这样:

回到首页可以看到已经完成的计划就消失了:

这样,一个个人计划所需的主要功能就实现了呀~当然页面有点丑陋,可以用 css 来装饰一下,这个交给你自己玩玩,这次主要是想让你了解 bottle 的使用,等会我把源码都发你,你可以基于此做更多的改进。

对于每个任务的内容,也可以写一个方法进行查询,甚至你还可以使用 bottle 写一个 API 直接返回 Json:

这时候可以这样访问接口:

当然你可以快速自定义 404 页面,使用 bottle 的 error 模块实现:

ok,以上。

ps:本篇教程主要参考至 bottle 官方文档的教程,附上 bottle 的官方文档链接:

http://bottlepy.org/docs/dev/index.html

源码可以在公众号后台发送 0710 获取。

责任编辑:

用python实现todolist_So easy !用 Python 开发一个todolist相关推荐

  1. Python Web实战:Flask + Vue 开发一个漂亮的词云网站

    作者:snowspace@掘金 前言 大家好,我是菜鸟哥!Python里面两大最牛的Web框架,一个是Django,一个是Flask .今天就分享一个用Flask做的词云生成网站,非常有意思的小web ...

  2. 探索 Python、机器学习和 NLTK 库 开发一个应用程序,使用 Python、NLTK 和机器学习对 RSS 提要进行分类

    挑战:使用机器学习对 RSS 提要进行分类 最近,我接到一项任务,要求为客户创建一个 RSS 提要分类子系统.目标是读取几十个甚至几百个 RSS 提要,将它们的许多文章自动分类到几十个预定义的主题领域 ...

  3. python的Tkinter库简单应用——开发一个简易计算器

    利用python的Tkinter库开发一个简易计算器 文章目录 利用python的Tkinter库开发一个简易计算器 前言 一.实验准备 二.开发步骤步骤 1.引入库 2.界面设计 3.关键--实现T ...

  4. python如何开发小软件-Python程序员,如何快速开发一个小程序

    要点: 小程序是前后端分离的. 前端使用的是微信自定义的一套规范wxml+wxss+json+js,本质还是html+css+js. 后台可以选用任何你熟悉的语言:Java,Python,PHP,Ru ...

  5. python 250行代码开发一个贪吃蛇

    python 250行代码开发一个贪吃蛇 1. 前提工作准备 2. 全局变量的定义与包的导入 3. 游戏开始界面初始化 4. 游戏界面的设置 4.1 游戏界面,使用一个Point类进行划分 4.2 预 ...

  6. 实战|轻松用 Python 开发一个简单有趣的聊天小程序

    前言 Internet 协议集支持一个无连接的传输协议,该协议称为用户数据报协议(UDP,User Datagram Protocol). UDP 为应用程序提供了一种无需建立连接就可以发送封装的 I ...

  7. python 创意项目_针对python开发人员的10个很棒的python项目创意

    python 创意项目 The joy of coding Python should be in seeing short, concise, readable classes that expre ...

  8. python软件包自带的集成开发环境-Python的10大集成开发环境和代码编辑器(指南)...

    使用IDLE或者Python Shell来编写Python是非常适合于简单程序的,但是这些工具往往将大型的编程项目变成一个个充满绝望和沮丧的"坑".使用一款集成开发环境甚至是一款好 ...

  9. java和python可以在一个项目中同时使用么-可以同时用python和java开发一个app吗?...

    java属于高大上,适合12306这种有钱的金主,同样的项目要是用java做的,就能唬来成倍的钱,没钱搞java,只能晚上加班到10来点,在eclipse吭哧吭哧地编译完项目以后,在七八屏的堆栈信息里 ...

最新文章

  1. Tensorflow broadcast 广播机制
  2. html网页中显示乱码的问题解决
  3. TypeScript 3.9 正式发布!平均编译时长从 26 秒缩短至 10 秒
  4. java 方式配置ssm,关于SSM以及Spring boot中对于Spring MVC配置的问题
  5. 依图芯片服务器,AI 芯片行业再添硬核新玩家:依图推出云端 AI 芯片 questcore™...
  6. java quartz实例_一个非常简单的quartz例子
  7. aws平台中为ec2实例添加双网卡
  8. mysqli_connect参数的写法以及如何设置特定端口
  9. (转)awk实例练习(二)
  10. Response.End() 与Response.Close()的区别
  11. plsql导出表结构到excel_PLSQL导出表结构和数据的三种方式
  12. 【转】音视频工程中VGA线材的选材技巧
  13. C#读取MP3文件的专辑图片和ID3V2Tag信息(带代码)
  14. 狐妖小红娘的主题曲用计算机弹奏,1红娘曲谱_跪求狐妖小红娘新主题曲钢琴曲谱...
  15. Java并发编程:自己动手写一把可重入锁
  16. Jaca 有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
  17. EMCP  物联网云平台萤石云密钥功能使用手册
  18. 【Git】报错处理:fatal: detected dubious ownership in repository at .....Set the environment variable GIT_T
  19. JAVA学习05-类型转换
  20. 【K8S】ctr和crictl的区别

热门文章

  1. 终于写了自己第一个有些用处的代码,留念留念,是模糊搜索并复制到指定文件夹...
  2. XtraBackup做mysql主从同步
  3. unity-tweak-tool不能打开的解决办法
  4. Swift—初始 (1)
  5. Eclipse的ExtJs智能提示
  6. 机器学习和深度学习的区别 深度学习的完全取代机器学习吗
  7. Fedora 31 没被砍掉,或将在2020年11月底发布
  8. AR模型在信号处理中的应用
  9. RS232详解(续)
  10. 小型电梯尺寸_简易式家用电梯-潞城=小型阁楼家用电梯