Flask是一個用Python編寫的web應用框架, 位元組跳動的大佬David Beasley宣稱:Python web開發,只需Flask。
一、簡介
Flask是一個輕量級的Web框架,其具有靈活性強,易上手,生態豐富,擴展性高等優點,不用大量的學習和代碼編寫就可以讓你快速上手。因此,開發人員可以更專註於業務邏輯而不必過多關心框架細節。Flask可以用來開發各種類型的Web應用, 如社交網站、博客、在線學習平台等。
# Flask框架的典型Hello World案例如下所示:
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
if __name__ == "__main__":
app.run()
二、Flask的優點
1. 靈活性強:
Flask框架非常精簡,只包含最主要的功能,對於其他附加功能,開發人員可以通過使用Flask插件來實現。這種方法不僅可以減輕框架的負擔,還可以使開發人員只專註於真正有意義的工作。
2. 易上手:
Flask框架使用簡單、清晰的代碼結構,上手容易,可讀性強,文檔詳盡(https://flask.palletsprojects.com/en/2.1.x/)。此外, Flask提供了一個集成開發環境Flask-CLI(Command Line Interface),讓開發人員更容易實現開發和調試等環節。
3. 生態豐富:
Flask擁有一個龐大的插件和擴展庫,涵蓋了從緩存、資料庫、表單處理到身份驗證等功能完善的功能,為開發人員提供了極大的靈活性。
4. 擴展性高:
Flask框架提供了相應的擴展介面,在擴展功能的同時又提供了很高的靈活性,使得開發人員能夠自行根據項目需求定製開發需求。
三、Flask Web開發實戰
下面通過一個小案例來介紹Flask的Web開發實戰,代碼如下:
# 引入Flask模塊
from flask import Flask, render_template, request
app = Flask(__name__)
# 呈現用戶註冊頁面
@app.route('/register', methods=['GET'])
def register():
return render_template('register.html')
# 驗證用戶提交的註冊數據
@app.route('/register', methods=['POST'])
def register_handler():
# 獲取用戶提交的數據
username = request.form['username']
password = request.form['password']
email = request.form['email']
phone = request.form['phone']
# 進行數據存儲,省略...
# 返回處理結果
return 'Succeed!'
if __name__ == '__main__':
app.run(debug=True)
上述代碼演示了如何使用Flask開發一個簡單的用戶註冊頁面。首先,我們在路由(route)函數上添加裝飾器,指定處理請求的URL路徑;然後,在附近函數中,我們通過request對提交表單數據進行獲取和處理,最後返回處理結果。
另外,我們使用了Flask的渲染模板函數render_template(),通過這個函數,可以使用html模板引擎快速地構建一個用戶友好的前端界面,從而縮短開發時間和難度。
四、Flask擴展應用
Flask提供了非常多的擴展,常用的有Flask-Login、 Flask-SQLAlchemy、 Flask-WTF等等,下面我們來介紹其中兩個步驟示例,以Flask-SQLAlchemy為例。
1. Flask-SQLAlchemy:
Flask-SQLAlchemy是Flask的SQLAlchemy擴展,簡化了與資料庫交互的步驟,大大提高了開發效率。下面給出了一個使用Flask-SQLAlchemy查詢資料庫的代碼:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///mydb_te.db'
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer,primary_key=True,autoincrement=True)
username = db.Column(db.String(80),unique=True,nullable=False)
if __name__ == '__main__':
db.create_all()
app.run(debug=True)
2. Flask-WTF:
Flask-WTF是Flask的表單處理擴展,可以先定義一個簡單的表單模板,然後在路由函數中直接調用form屬性,在view.html中可以直接訪問表單對象的屬性進行操作,大幅簡化了表單開發的步驟。下面給出了一個使用Flask-WTF的示例:
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, BooleanField, SubmitField
from wtforms.validators import DataRequired, Email
class LoginForm(FlaskForm):
username = StringField('Username', validators=[DataRequired()])
password = PasswordField('Password', validators=[DataRequired()])
remember_me = BooleanField('Remember Me')
submit = SubmitField('Log In')
五、總結
通過本文,我們可以看到Flask框架的優勢在於簡潔、靈活,對於開發者來說不僅可以快速上手,同時還具有很高的擴展性,例如通過插件能夠實現SQLAlchemy、WTForms等,能夠大大地提高開發效率,Flask框架非常適合開發各種類型和大小的web應用,學習掌握它,未嘗不是一種好的選擇。
原創文章,作者:NUJVB,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/331834.html