1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        用 Python 開發(fā)一個 【個人計劃 todolist】

        共 2006字,需瀏覽 5分鐘

         ·

        2020-06-24 23:22



        有一句話是這樣說的:“凡事預則立,不預則廢”,說的是我們在做事之前,最好制定好你的計劃,然后有序的去執(zhí)行,這樣不會產(chǎn)生過多的錯誤和不爽,如果什么都不準備的話,人就容易廢掉。

        今天,你廢了么?


        25937987704126e511d9dddd35202fb0.webp


        為了讓我們不要那么快的廢掉,要不我們用 Python 來寫一個網(wǎng)頁版的 todolist, 然后在里面制定自己的計劃怎么樣?


        33b8886b4fe450a5909c766a51efcf43.webp

        可能你會想到像這種簡單一些的網(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ù)表:

        1a929d9f2c19e494c23a550e8e64a249.webp

        其中的 task 字段主要是用來存放用戶要添加的計劃內(nèi)容, status 用來標記用戶是否完成計劃的狀態(tài),比如 1 表示未完成, 0 表示已經(jīng)完成。
        可以通過 insert 插入每一條任務的數(shù)據(jù):

        e35aa317be9f04fd46c09301235dc622.webp

        執(zhí)行:


        7a30ec84467b2734b9f378465b25b603.webp


        這時候在你當前的目錄下就會生成一個數(shù)據(jù)庫文件,等會所有的計劃數(shù)據(jù)都存儲在這里面:


        90fb63e1d1c2e00ba182ecfdf2f6a36a.webp


        如果你之前沒有安裝過 bottle ,可以使用 pip 安裝一波,它沒有依賴其它的庫,安裝很快就能搞定。
        安裝完成之后導入 bottle:


        71785c5d372a9da3961d6dc9c7a8e1b6.webp



        定義路由,當你訪問 /todo 首頁的時候就會調(diào)用這個方法:


        2b11564bf3eb3bdddef33ab6029b17f0.webp


        這時候可以連接我們剛剛創(chuàng)建數(shù)據(jù)庫,順便將未完成的任務查找出來,然后將結(jié)果返回進行顯示:


        32132572db504da1f6ae3938d6a70802.webp


        接著執(zhí)行服務,你可以自己指定運行在服務器上的什么端口上,這里我指定為 8888 端口:



        454df77fa0c93b0cf3bee7f1a6cccf80.webp

        運行 Python 之后,就可以在瀏覽器打開:localhost:8888/todo



        5a4fd6a79249864308de8c1504b12f08.webp


        可以看到,我們剛剛插入的數(shù)據(jù)顯示出來了,說明服務和數(shù)據(jù)庫運行正常。
        那么接下來就把數(shù)據(jù)顯示到首頁,可以使用 bottle 的模板引擎實現(xiàn)數(shù)據(jù)的綁定,在當前的目錄下創(chuàng)建一個 make_table.tpl 文件。


        7027783eb05eae4184e2835896bdf188.webp



        這里我們使用了 HTML 的模板標記語言,我們可以在剛剛的 Python 文件中將在數(shù)據(jù)庫中得到的結(jié)果寫到 rows 里面,然后在?make_table 模板文件中就可以使用它循環(huán)得到相關的數(shù)據(jù)了:



        5a1fda95bc64b2290445c089896f843e.webp


        運行一波:



        c3eb2f2ec4bf9b3d72515c82facf6e1b.webp

        數(shù)據(jù)成功綁定。
        接下來插入計劃的內(nèi)容,可以使用 bottle 的 request 做 Get 和 Post 請求。
        創(chuàng)建一個 new_task.tpl 模板文件:


        1ade460d8dcf943ce920546ae6995a36.webp


        這里定義了一個 form 表單,讓它去請求 new 方法,可以在 py 中定義這個方法,先來展示看看:



        3e242f14a46a41307d995b5160001a87.webp


        運行一波:



        fe755354d33ee7c3cf74a2ad5cf14399.webp


        那么當用戶點擊提交的時候,需要將輸入框的內(nèi)容獲取,然后保存到數(shù)據(jù)庫中,可以在 new 方法中這樣定義:



        808859de1c01364fed58ddd1ad27c9bf.webp


        這里主要是通過 GET.task 來獲取輸入框的數(shù)據(jù),然后將數(shù)據(jù)插入到數(shù)據(jù)庫中,添加成功后顯示一個成功添加的提醒。
        運行一下:


        5a032acb62f6f41e1e877d0cb6eba257.webp


        可以可以,回到首頁可以看到數(shù)據(jù)確實添加了:


        c0029c87dca892146471e636b276926d.webp


        可以添加計劃了,接下來要實現(xiàn)的是對計劃的編輯,可以讓用戶選擇每條計劃是否完成了,以及修改計劃的內(nèi)容:


        9da27741007f9c39ff7cb9b917973d84.webp


        可以寫一個 edit_task.tpl 模板文件來進行數(shù)據(jù)的展示和提交:


        8190f2ed6491962f5b6fca627bc6e5e3.webp


        這里的 form 表單綁定的請求是 edit 方法,其中 {{no}} 指的是計劃表中的 id,這樣就能根據(jù) id 來修改特定的計劃數(shù)據(jù)。
        想要在 input 標簽中顯示相關的計劃內(nèi)容和狀態(tài),可以在 py 里面通過數(shù)據(jù)庫獲取然后返回,放到 old 參數(shù)中,像這樣:


        8ae18a28aeccef77c2ac23dda179cbf7.webp


        而當用戶進行編輯操作提交的時候,可以將計劃的內(nèi)容和狀態(tài)獲取過來,然后根據(jù) id 來修改數(shù)據(jù)庫中的計劃數(shù)據(jù):



        3a9c7a4a721fc440850cb2a782d39ae9.webp


        在 route 定義那里的 ?指的是我們要接收一個參數(shù)為 no 的 int 類型數(shù)據(jù),也就是 id。


        運行一波就是這樣:



        3a9c7a4a721fc440850cb2a782d39ae9.webp


        回到首頁可以看到已經(jīng)完成的計劃就消失了:


        deafc5a3d251d73a227e4a4193ad3bc6.webp

        這樣,一個個人計劃所需的主要功能就實現(xiàn)了呀~當然頁面有點丑陋,可以用 css 來裝飾一下,這個交給你自己玩玩,這次主要是想讓你了解 bottle 的使用,等會我把源碼都發(fā)你,你可以基于此做更多的改進。
        對于每個任務的內(nèi)容,也可以寫一個方法進行查詢,甚至你還可以使用 bottle 寫一個 API 直接返回 Json:


        7d517b84b11916dea0b7e0e385541a38.webp


        這時候可以這樣訪問接口:



        9d880936d83ef67697e00a4e975cd7e3.webp


        當然你可以快速自定義 404 頁面,使用 bottle 的 error 模塊實現(xiàn):


        4637fa6ae05421cca85cc390986817fd.webp




        87b2de688d9615bcd4cb04d40ecda744.webp

        ok,以上。

        ps:本篇教程主要參考至 bottle 官方文檔的教程,附上 bottle 的官方文檔鏈接:
        http://bottlepy.org/docs/dev/index.html
        小帥b希望以這樣的呈現(xiàn)方式讓你更輕松的了解 bottle 這個輕量級?web 框架的使用,除了 Flask 外,這個也是挺不錯的選擇哦,寫一些網(wǎng)頁還是杠杠的,希望對你有幫助,那么我們下回見咯~
        本文所涉及的源碼可以在公眾號后臺發(fā)送 6 獲取。

        相關:

        用 Python 開發(fā)一個【短鏈接生成器】
        用 Python 開發(fā)一個微信留言小程序



        peace!
        瀏覽 181
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            一级片俄罗斯 | 人人射在线 | 欧美精品第一页在线观看 | 日韩美女在线观看 | 性videosgratis喷潮hd | 人人操欧美 | 偷拍xxxx按摩 | ThePorn人妻白浆 | 免费 成人 美女在线观看 | 吖v在线 |