FlaskEnvironment Setup and basicconcepts

LearningFlask basicconcepts, includingEnvironment Setup, projectstructure and corecomponent

1. FlaskIntroduction

Flask is a 轻量级 Python Webframework, 由Armin Ronachercreation, 基于Werkzeug WSGItool箱 and Jinja2模板引擎. Flask被称 for "微framework", 因 for 它不依赖specific tool or library, providing了构建Webapplication所需 basicfunctions, 但允许Development者根据需要选择scale.

1.1 Flask 特点

  • 轻量级: Flaskcorefunctions simple , 只package含必要 component, 不会强加过 many structure or 依赖
  • flexible性: 允许Development者根据projectrequirements选择合适 scale and library
  • 易于Learning: APIdesign简洁, documentation丰富, 适合初学者
  • 强 big scale生态: 拥 has 丰富 scalelibrary, 可用于processingdatalibrary, 表单verification, userauthenticationetc.
  • 基于Werkzeug and Jinja2: 利用成熟 toollibrary, 确保performance and security性

2. Environment Setup

in 开始usingFlask之 before , 我们需要搭建Developmentenvironment. 以 under is 详细 步骤:

2.1 installationPython

Flask is 基于Python , 所以首先需要installationPython. 推荐usingPython 3.6 or 更 high version.

  • Windows: from Python官网 under 载installationpackage, runinstallation程序并勾选"Add Python to PATH"
  • macOS: usingHomebrewinstallation: brew install python
  • Linux: usingsystempackagemanagement器installation, such asUbuntu: sudo apt-get install python3

2.2 verificationPythoninstallation

installationcompletion after , 打开终端 (Windows on is commands提示符 or PowerShell) , 输入以 under commandsverificationPython is 否installation成功:

python --version  # Windows
python3 --version  # macOS/Linux

such as果显示Pythonversion号 (such asPython 3.8.5) , 则说明installation成功.

2.3 installationpip

pip is Python packagemanagementtool, 用于installation and managementPythonlibrary. from Python 3.4开始, pip已经package含 in Pythoninstallationpackagein. verificationpip is 否installation成功:

pip --version  # Windows
pip3 --version  # macOS/Linux

2.4 creation虚拟environment

虚拟environment is Pythonproject 隔离environment, 可以避免不同project之间 依赖conflict. 推荐 for 每个Flaskprojectcreation一个独立 虚拟environment.

usingPython in 置 venvmodulecreation虚拟environment:

# creation虚拟environment
python -m venv flask_env  # Windows
python3 -m venv flask_env  # macOS/Linux

# 激活虚拟environment
# Windows (commands提示符)
flask_env\Scripts\activate.bat
# Windows (PowerShell)
flask_env\Scripts\Activate.ps1
# macOS/Linux
source flask_env/bin/activate

激活虚拟environment after , 终端提示符 before 会显示虚拟environment名称 (such as(flask_env)) .

2.5 installationFlask

in 激活 虚拟environmentin, usingpipinstallationFlask:

pip install flask

verificationFlask is 否installation成功:

python -c "import flask; print(flask.__version__)"

such as果显示Flaskversion号 (such as1.1.2) , 则说明installation成功.

3. creation第一个Flaskapplication

现 in 我们来creation一个 simple Flaskapplication, 体验Flask basicfunctions.

3.1 creationprojectstructure

首先creation一个projectTable of Contents, 然 after in Table of Contentsincreation一个Pythonfile:

# creationprojectTable of Contents
mkdir flask_app
cd flask_app

# creationPythonfile
touch app.py  # macOS/Linux
echo. > app.py  # Windows

3.2 writingFlaskapplicationcode

in app.pyfileinwriting以 under code:

from flask import Flask

# creationFlaskapplicationinstance
app = Flask(__name__)

# 定义routing and 视graphfunction
@app.route('/')
def hello_world():
    return 'Hello, Flask!'

# runapplication
if __name__ == '__main__':
    app.run(debug=True)

3.3 runFlaskapplication

in 终端inrunapplication:

python app.py

FlaskDevelopmentserver会 in 默认端口5000 on 启动, 输出class似以 under information:

* Serving Flask app "app" (lazy loading)
* Environment: production
  WARNING: This is a development server. Do not use it in a production deployment.
  Use a production WSGI server instead.
* Debug mode: on
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger PIN: 123-456-789

打开浏览器, 访问http://127.0.0.1:5000/, 你将看 to "Hello, Flask!" 输出.

4. Flaskapplication basicstructure

让我们analysis一 under 刚才creation Flaskapplication basicstructure:

4.1 applicationinstance

app = Flask(__name__) creation了Flaskapplication instance. __name__ parameter is 当 before module 名称, Flaskusing它来确定application 根Table of Contents, 以便找 to 模板 and 静态fileetc.resource.

4.2 routing and 视graphfunction

routing is URL to 视graphfunction map. using@app.route('/')装饰器可以将URLpathmap to for 应 视graphfunction. 当user访问该URL时, Flask会调用 for 应 视graphfunction, 并将function return valueserving asresponse返回给客户端.

4.3 runapplication

app.run(debug=True) 启动FlaskDevelopmentserver. debug=True 启用debug模式, in debug模式 under , 当code发生变化时, server会自动重启, 并且 in 发生error时会显示详细 errorinformation.

5. FlaskDevelopmentserver configuration

FlaskDevelopmentserver可以throughapp.run()method parameterforconfiguration:

app.run(
    host='0.0.0.0',  # 允许所 has IP访问
    port=8080,  # using8080端口
    debug=True  # 启用debug模式
)

6. Flaskapplication configurationmanagement

Flaskproviding了 many 种方式来managementapplicationconfiguration:

6.1 usingconfigurationobject

class Config:
    DEBUG = True
    SECRET_KEY = 'your-secret-key'

app.config.from_object(Config)

6.2 usingenvironmentvariable

import os
app.config['DEBUG'] = os.environ.get('DEBUG', False)
app.config['SECRET_KEY'] = os.environ.get('SECRET_KEY', 'default-secret-key')

6.3 usingconfigurationfile

creation一个configurationfileconfig.py:

DEBUG = True
SECRET_KEY = 'your-secret-key'

然 after in applicationin加载configuration:

app.config.from_pyfile('config.py')

7. Flask corecomponent

Flaskpackage含以 under corecomponent:

  • routingsystem: 将URLmap to 视graphfunction
  • 模板引擎: usingJinja2模板引擎生成HTMLresponse
  • requestprocessing: processingHTTPrequest, includingrequest头, request体etc.
  • responseprocessing: 生成HTTPresponse, includingresponse头, response体etc.
  • sessionmanagement: managementusersession
  • on under 文management: providingrequest on under 文 and application on under 文

8. Flaskscale

Flask scale生态非常丰富, 以 under is 一些常用 scale:

  • Flask-SQLAlchemy: SQLAlchemy ORM 集成, 用于datalibraryoperation
  • Flask-WTF: 表单processing and verification
  • Flask-Login: userauthentication and sessionmanagement
  • Flask-Bcrypt: password哈希processing
  • Flask-Mail: 发送电子email
  • Flask-RESTful: DevelopmentRESTful API
  • Flask-CORS: processing跨域resource共享
  • Flask-Migrate: datalibrarymigrationmanagement

练习 1: creationFlaskapplication

  1. creation一个 new 虚拟environment
  2. installationFlask
  3. creation一个 simple Flaskapplication, package含以 under functions:
    • 首页 (/) 显示"Hello, Flask!"
    • /aboutrouting显示"This is an about page"
    • /contactrouting显示"This is a contact page"
  4. runapplication, in 浏览器in访问各个routing

练习 2: configurationFlaskapplication

  1. creation一个configurationfileconfig.py, package含DEBUG and SECRET_KEYconfiguration
  2. in Flaskapplicationin加载configurationfile
  3. modifyapplication, 使其 in 不同environment under using不同 configuration
  4. runapplication, verificationconfiguration is 否生效