用python实现todolist_So easy !用 Python 开发一个todolist
原標(biāo)題:So easy !用 Python 開發(fā)一個todolist
有一句話是這樣說的:“凡事預(yù)則立,不預(yù)則廢”,說的是我們在做事之前,最好制定好你的計劃,然后有序的去執(zhí)行,這樣不會產(chǎn)生過多的錯誤和不爽,如果什么都不準(zhǔn)備的話,人就容易廢掉。
今天,你廢了么?
為了讓我們不要那么快的廢掉,要不我們用 Python 來寫一個網(wǎng)頁版的 todolist, 然后在里面制定自己的計劃怎么樣?
可能你會想到像這種簡單一些的網(wǎng)頁交互,可以用 Flask 來實現(xiàn),不過小帥b今天要給你介紹的是另一個輕量級的 web 框架,它叫 bottle ,知道的人相對較少,但它也是很好用的呢。
我們要在網(wǎng)站里面寫入計劃內(nèi)容,就需要用到數(shù)據(jù)庫,我們也可以使用輕量級的 sqlite 數(shù)據(jù)庫實現(xiàn),這個 Python 有自帶的 sqlite3 庫。
可以使用它來創(chuàng)建一張 todo 數(shù)據(jù)表:
其中的 task 字段主要是用來存放用戶要添加的計劃內(nèi)容, status 用來標(biāo)記用戶是否完成計劃的狀態(tài),比如 1 表示未完成, 0 表示已經(jīng)完成。
可以通過 insert 插入每一條任務(wù)的數(shù)據(jù):
執(zhí)行:
這時候在你當(dāng)前的目錄下就會生成一個數(shù)據(jù)庫文件,等會所有的計劃數(shù)據(jù)都存儲在這里面:
如果你之前沒有安裝過 bottle ,可以使用 pip 安裝一波,它沒有依賴其它的庫,安裝很快就能搞定。
安裝完成之后導(dǎo)入 bottle:
定義路由,當(dāng)你訪問 /todo 首頁的時候就會調(diào)用這個方法:
這時候可以連接我們剛剛創(chuàng)建數(shù)據(jù)庫,順便將未完成的任務(wù)查找出來,然后將結(jié)果返回進行顯示:
接著執(zhí)行服務(wù),你可以自己指定運行在服務(wù)器上的什么端口上,這里我指定為 8888 端口:
運行 Python 之后,就可以在瀏覽器打開:localhost:8888/todo
可以看到,我們剛剛插入的數(shù)據(jù)顯示出來了,說明服務(wù)和數(shù)據(jù)庫運行正常。
那么接下來就把數(shù)據(jù)顯示到首頁,可以使用 bottle 的模板引擎實現(xiàn)數(shù)據(jù)的綁定,在當(dāng)前的目錄下創(chuàng)建一個 make_table.tpl 文件。
這里我們使用了 HTML 的模板標(biāo)記語言,我們可以在剛剛的 Python 文件中將在數(shù)據(jù)庫中得到的結(jié)果寫到 rows 里面,然后在 make_table模板文件中就可以使用它循環(huán)得到相關(guān)的數(shù)據(jù)了:
運行一波:
數(shù)據(jù)成功綁定。
接下來插入計劃的內(nèi)容,可以使用 bottle 的 request 做 Get 和 Post 請求。
創(chuàng)建一個 new_task.tpl 模板文件:
這里定義了一個 form 表單,讓它去請求 new 方法,可以在 py 中定義這個方法,先來展示看看:
運行一波:
那么當(dāng)用戶點擊提交的時候,需要將輸入框的內(nèi)容獲取,然后保存到數(shù)據(jù)庫中,可以在 new 方法中這樣定義:
這里主要是通過 GET.task 來獲取輸入框的數(shù)據(jù),然后將數(shù)據(jù)插入到數(shù)據(jù)庫中,添加成功后顯示一個成功添加的提醒。
運行一下:
可以可以,回到首頁可以看到數(shù)據(jù)確實添加了:
可以添加計劃了,接下來要實現(xiàn)的是對計劃的編輯,可以讓用戶選擇每條計劃是否完成了,以及修改計劃的內(nèi)容:
可以寫一個 edit_task.tpl 模板文件來進行數(shù)據(jù)的展示和提交:
這里的 form 表單綁定的請求是 edit 方法,其中 {{no}} 指的是計劃表中的 id,這樣就能根據(jù) id 來修改特定的計劃數(shù)據(jù)。
想要在 input 標(biāo)簽中顯示相關(guān)的計劃內(nèi)容和狀態(tài),可以在 py 里面通過數(shù)據(jù)庫獲取然后返回,放到 old 參數(shù)中,像這樣:
而當(dāng)用戶進行編輯操作提交的時候,可以將計劃的內(nèi)容和狀態(tài)獲取過來,然后根據(jù) id 來修改數(shù)據(jù)庫中的計劃數(shù)據(jù):
在 route 定義那里的 指的是我們要接收一個參數(shù)為 no 的 int 類型數(shù)據(jù),也就是 id。
運行一波就是這樣:
回到首頁可以看到已經(jīng)完成的計劃就消失了:
這樣,一個個人計劃所需的主要功能就實現(xiàn)了呀~當(dāng)然頁面有點丑陋,可以用 css 來裝飾一下,這個交給你自己玩玩,這次主要是想讓你了解 bottle 的使用,等會我把源碼都發(fā)你,你可以基于此做更多的改進。
對于每個任務(wù)的內(nèi)容,也可以寫一個方法進行查詢,甚至你還可以使用 bottle 寫一個 API 直接返回 Json:
這時候可以這樣訪問接口:
當(dāng)然你可以快速自定義 404 頁面,使用 bottle 的 error 模塊實現(xiàn):
ok,以上。
ps:本篇教程主要參考至 bottle 官方文檔的教程,附上 bottle 的官方文檔鏈接:
http://bottlepy.org/docs/dev/index.html
源碼可以在公眾號后臺發(fā)送 0710 獲取。
責(zé)任編輯:
總結(jié)
以上是生活随笔為你收集整理的用python实现todolist_So easy !用 Python 开发一个todolist的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 英语 语义分割_Padlex数据处理-语
- 下一篇: 爬取音乐排行_TapTap排行榜数据大盘