Flask是一個用Python編寫的輕量級Web應用框架。它由Armin Ronacher開發,最初是作為April Fool’s玩笑項目發布,但后來因其簡潔、靈活的特性而廣受歡迎。Flask基于Werkzeug WSGI工具包和Jinja2模板引擎,提供了Web開發所需的基本功能,同時保持了高度的可擴展性。
在安裝Flask之前,需要確保系統已經安裝了Python。建議使用Python 3.6及以上版本??梢酝ㄟ^以下命令檢查Python版本:
python --version
如果系統沒有安裝Python,可以從Python官網下載并安裝。
為了隔離項目依賴,建議使用虛擬環境??梢允褂肞ython自帶的venv
模塊創建虛擬環境:
python -m venv flask_env
激活虛擬環境:
flask_env\Scripts\activate
source flask_env/bin/activate
在激活的虛擬環境中,使用pip安裝Flask:
pip install Flask
安裝完成后,可以通過以下命令驗證安裝是否成功:
python -c "import flask; print(flask.__version__)"
如果輸出了Flask的版本號,說明安裝成功。
Flask有許多擴展可以增強其功能。以下是一些常用的擴展及其安裝命令:
pip install Flask-SQLAlchemy
pip install Flask-WTF
pip install Flask-Login
pip install Flask-RESTful
一個典型的Flask項目結構如下:
my_flask_app/
│
├── app.py
├── requirements.txt
├── templates/
│ └── index.html
└── static/
└── style.css
在app.py
中編寫一個簡單的Flask應用:
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def home():
return render_template('index.html')
if __name__ == '__main__':
app.run(debug=True)
在templates/
目錄下創建index.html
文件:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>My Flask App</title>
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
</head>
<body>
<h1>Hello, Flask!</h1>
</body>
</html>
在項目根目錄下運行以下命令啟動Flask開發服務器:
python app.py
打開瀏覽器,訪問http://127.0.0.1:5000/
,應該能看到”Hello, Flask!“的頁面。
Flask支持多種配置方式,常見的有:
app.config['DEBUG'] = True
app.config.from_pyfile('config.py')
app.config.from_envvar('FLASK_CONFIG')
使用@app.route()
裝飾器定義路由:
@app.route('/about')
def about():
return 'About Page'
可以在路由中使用變量:
@app.route('/user/<username>')
def show_user_profile(username):
return f'User {username}'
默認情況下,路由只響應GET請求??梢酝ㄟ^methods
參數指定其他HTTP方法:
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
# 處理登錄邏輯
pass
else:
# 顯示登錄表單
pass
Flask使用Jinja2作為模板引擎。模板文件通常放在templates/
目錄下。
{{ variable }}
{% if condition %}
...
{% endif %}
{% for item in items %}
{{ item }}
{% endfor %}
可以使用extends
和block
實現模板繼承:
<!-- base.html -->
<html>
<head>
{% block head %}
<title>{% block title %}{% endblock %}</title>
{% endblock %}
</head>
<body>
{% block content %}
{% endblock %}
</body>
</html>
<!-- child.html -->
{% extends "base.html" %}
{% block title %}Child Page{% endblock %}
{% block content %}
<h1>Hello, World!</h1>
{% endblock %}
Flask的擴展可以大大增強其功能。以下是一些常用擴展的簡要介紹:
用于數據庫集成,支持多種數據庫后端:
from flask_sqlalchemy import SQLAlchemy
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///app.db'
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True, nullable=False)
用于表單處理和驗證:
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import DataRequired
class MyForm(FlaskForm):
name = StringField('Name', validators=[DataRequired()])
submit = SubmitField('Submit')
用于用戶認證和會話管理:
from flask_login import LoginManager, UserMixin, login_user
login_manager = LoginManager()
login_manager.init_app(app)
class User(UserMixin, db.Model):
# 用戶模型
pass
@login_manager.user_loader
def load_user(user_id):
return User.query.get(int(user_id))
在生產環境中,不建議使用Flask自帶的開發服務器??梢允褂靡韵路绞讲渴穑?/p>
安裝Gunicorn:
pip install gunicorn
運行應用:
gunicorn -w 4 app:app
安裝Nginx:
# Ubuntu
sudo apt-get install nginx
# CentOS
sudo yum install nginx
配置Nginx:
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Flask是一個強大而靈活的Python Web框架,非常適合快速開發和原型設計。通過本文的介紹,你應該已經了解了Flask的基本概念、安裝方法以及如何創建和部署一個簡單的Flask應用。隨著對Flask的深入學習和實踐,你將能夠構建更加復雜和功能豐富的Web應用。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。