我們將建立一個簡單的資料庫驅動的筆記本應用。本教程面向想學習如何使用Flask開發網站或者web應用的初學者。
在學習本教程之前,請先安裝好Python和SQLite。如果你還沒有在電腦上安裝,請先安裝。如果你安裝的Python版本為2.5或者更高,那麼你就無需安裝SQLite了,Python 2.5之後的版本都已經內建了SQLite。
Python: https://www.python.org/
SQLite: https://www.sqlite.org/download.html
本教程主要包含的內容:
- 使用模板
- 儲存一條記錄到資料庫中
- 從資料庫中獲取一條記錄
- 更新資料庫中的一條記錄
- 刪除資料庫中的一條記錄
應用的功能:
- 使用者可以建立一篇筆記(一篇筆記包含題目和內容)
- 使用者可以瀏覽筆記列表
- 使用者可以編輯一篇筆記
- 使用者可以刪除一篇筆記
OK,我們開始開發。
首先,我們需要安裝Flask和Flask-SQLAlchemy。
開啟一個控制檯視窗(Windows中的命令列工具),然後逐一執行以下命令:
1 2 |
pip install Flask pip install Flask-SQLAlchemy |
現在,建立一個資料夾,用於存放應用的原始碼,我們將這個資料夾命名為note_app。
在剛建立的檔案中,建立一個名為main.py的檔案。
在本教程中,我們將使用模板,所以,我們繼續建立一個資料夾,用於存放模板。使用templates作為它的名字,它應該位於note_app資料夾下面。當我們使用模板時,Flask會自動找到templates資料夾下面的模板,這也是我們將這個資料夾命名為templates的原因。
下面,我們開始寫程式碼,在main.py檔案中
1 2 3 |
from flask import Flask, render_template, redirect, request from flask_sqlalchemy import SQLAlchemy import os |
然後,我們建立實際的應用,同時建立SQLAlchemy物件,並把它傳遞給應用。
1 2 3 4 |
app = Flask(__name__) basedir = os.path.abspath(os.path.dirname(__file__)) app.config['SQLALCHEMY_DATAB+4ASE_URI'] = 'sqlite:///' + os.path.join(basedir, 'app.sqlite') db = SQLAlchemy(app) |
獲取成為Python開發專家的技巧。訪問: http://treehouse.7eer.net/c/245500/24564…
下面,我們將建立一個模型:
1 2 3 4 5 6 7 |
class Note(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(80)) body = db.Column(db.Text) def __init__(self, title, body): self.title = title self.body = body |
上面的這個Note模型將用於對資料庫中的筆記進行建立,獲取,更新和刪除的操作。我們的Note模型有一個Integer型別的id屬性,它作為主鍵。title欄位是String型別,它最多可以包含80個字元(你可以把字串的最大值改成你想要的,這裡我們只是把它設定為80),最後是一個Text型別的body屬性。
Integer,String,Text都是資料型別,你可以在SQLAlchemy的官方文件檢視到一系列的你可以使用的資料型別:http://docs.sqlalchemy.org/en/latest/cor…
去你的終端視窗,逐一輸入以下命令:
1 2 3 |
python from main import db db.create_all() |
上面的命令會初始化資料庫,它將建立資料庫和一個名為note的表。
現在,我們將建立一個函式,並且使用route()裝飾器將它繫結到一個URL上。
1 2 3 |
@app.route("/") def home(): return render_template("home.html") |
大致說來,當用使用者訪問我們網站的主頁(例如:http://mywebsite.com)時,flask就會呼叫我們在上面定義的home()函式。在home()函式裡,我們渲染了一個名為home.html的模板。
現在,開啟home.html,然後複製下面的內容:
1 2 3 |
Note Taking App View all notes Create a note |
回到main.py檔案中,然後複製下面的程式碼到檔案底部:
1 2 |
if __name__ == "__main__": app.run(debug=True) |
你的main.py檔案的內容應該類似下面這樣:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
from flask import Flask, render_template, redirect, request from flask_sqlalchemy import SQLAlchemy import os app = Flask(__name__) basedir = os.path.abspath(os.path.dirname(__file__)) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(basedir, 'app.sqlite') db = SQLAlchemy(app) class Note(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(80)) body = db.Column(db.Text) def __init__(self, title, body): self.title = title self.body = body @app.route("/") def home(): return render_template("home.html") if __name__ == "__main__": app.run(debug=True) |
現在,讓我們通過命令在終端視窗中(確保在note_app目錄下執行下面的命令)執行這個應用:
1 |
python main.py |
現在,在瀏覽器裡訪問http://127.0.0.1:5000/。
你應該會看到這個主頁:
我們現在這個應用的功能還不完善,在第二部分,我們將開發筆記頁面的建立,筆記列表等功能。
教程的原始碼放在Github上:https://github.com/basco-johnkevin/note-…