用python实现todolist_So easy !用 Python 开发一个todolist
原標題: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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 英语 语义分割_Padlex数据处理-语
- 下一篇: 爬取音乐排行_TapTap排行榜数据大盘