初识Flask架构

一、技能目标

  • 理解 Flask 框架基本概念与特点

  • 掌握 Flask 路由与视图函数的使用

  • 熟练使用 Jinja2 模板引擎渲染动态页面

  • 能够处理表单提交与数据验证

  • 能独立搭建并部署 Flask 应用

二、Flask 框架概述

  • Flask 是基于 Python 的轻量级 Web 微框架,设计简洁、灵活、易用,无强制复杂项目结构。

  • 核心依赖:

    1. Werkzeug:提供 WSGI 接口、HTTP 请求与响应处理、路由等核心功能

    2. Jinja2:模板引擎,用于动态生成 HTML 页面

  • 特点:核心简洁,提供 Web 开发核心工具,可通过扩展库补充高级功能,适合新手、快速原型、小型 Web 应用。

三、安装 Flask(实验过程)

  1. 基础安装命令

  2. pip3 install flask

  3. 配置阿里源

bash 复制代码
pip3 config set global.index-url http://mirrors.aliyun.com/pypi/simple
pip3 config set install.trusted-host mirrors.aliyun.com
  1. 配置华为源
bash 复制代码
pip3 config set global.index-url http://mirrors.huaweicloud.com/repository/pypi/simple
pip3 config set install.trusted-host mirrors.huaweicloud.com
  1. 升级 pip
bash 复制代码
python3 -m pip install --upgrade pip

四、第一个 Flask 应用(实验过程)

1. 实验步骤

  1. 新建文件:app.py

  2. 写入代码:

python

bash 复制代码
from flask import Flask
app = Flask(__name__)
​
@app.route('/')
def hello_world():
    return 'Hello, World!\n'
​
if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000, debug=True)
  1. 命令行运行:
复制代码
python3 app.py

浏览器访问:http://127.0.0.1:5000/,查看输出结果

2. 代码解析

  • __name__:确定应用根路径

  • @app.route('/'):绑定 URL 与视图函数

  • return:返回 HTTP 响应

  • app.run参数:host 允许外部访问;port 指定端口;debug 开启调试模式

五、路由与视图函数(实验过程)

实验 1:动态路由

  1. 代码编写:

python

bash 复制代码
from flask import Flask
app = Flask(__name__)
​
@app.route('/')
def hello_world():
    return 'Hello, World!\n'
​
@app.route('/greet/<name>')
def greet(name):
    return f'Hello,{name}!\n'
​
if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000, debug=True)
  1. 运行:python3 app.py

  2. 访问测试:http://127.0.0.1:5000/greet/Alice

实验 2:指定 HTTP 请求方法

  1. 代码添加:

python

bash 复制代码
@app.route('/submit', methods=['POST'])
def submit():
    return 'Form submitted successfully!\n'
  1. 运行服务,用 curl 测试:

bash

复制代码
curl -X POST 127.0.0.1:5000/submit
  1. GET 访问测试,观察405错误

实验 3:Jinja2 模板渲染

  1. 新建文件夹:templates

  2. 新建greet.html

html

bash 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Flask Example</title>
</head>
<body>
    <h1>Hello, {{ name }}!</h1>
</body>
</html>
  1. Python 代码:

python

bash 复制代码
from flask import render_template
@app.route('/greet/<name>')
def greet(name):
    return render_template('greet.html', name=name)
  1. 运行并访问:http://127.0.0.1:5000/greet/zhangsan

实验 4:模板继承

  1. templates下新建base.html

  2. 新建index.html继承父模板

  3. 编写视图函数渲染index.html

  4. 运行查看页面效果

六、表单处理(实验过程)

实验步骤

  1. 安装扩展:

bash

运行

复制代码
pip3 install flask-wtf
  1. 新建文件:biaodan.py

python

bash 复制代码
from flask import Flask, render_template
from flask_wtf import FlaskForm
from wtforms import StringField
from wtforms.validators import DataRequired
​
app = Flask(__name__)
app.secret_key = 's3cr3t'
​
class NameForm(FlaskForm):
    name = StringField('Name', validators=[DataRequired()])
​
@app.route('/', methods=['GET','POST'])
def index():
    form = NameForm()
    if form.validate_on_submit():
        return f'Hello,{form.name.data}!'
    return render_template('index.html', form=form)
​
if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000, debug=True)
  1. templates新建index.html表单模板

  2. 运行:python3 biaodan.py

  3. 浏览器访问,提交表单测试验证

常用验证器

  • DataRequired ():必填

  • Length (min=2,max=50):长度验证

  • Email ():邮箱格式

  • EqualTo ('password'):值一致

七、项目结构与部署(实验过程)

实验 1:标准项目结构搭建

  1. 按以下结构创建文件夹与文件

plaintext

复制代码
/my_flask_app
/app
    /templates
    /static
    __init__.py
    routes.py
    forms.py
run.py
  1. 分别写入对应代码

实验 2:生产环境部署

  1. 安装 Gunicorn:

bash

bash 复制代码
pip3 install gunicorn
  1. 运行部署命令:

bash

bash 复制代码
gunicorn -w 2 -b 0.0.0.0:8000 app:app

访问http://127.0.0.1:8000验证

八、简单博客应用(实验过程)

实验步骤

  1. 项目结构:

plaintext

复制代码
/simple_blog
/app
    /templates
        index.html
app.py
  1. 编写app.py

python

bash 复制代码
from flask import Flask, render_template, request
app = Flask(__name__)
posts = []
​
@app.route('/', methods=['GET','POST'])
def index():
    if request.method == 'POST':
        title = request.form['title']
        content = request.form['content']
        posts.append({'title':title, 'content':content})
    return render_template('index.html', posts=posts)
​
if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000, debug=True)
  1. 编写index.html模板

  2. 运行测试:python3 app.py

  3. 提交文章,查看列表展示

  4. 生产部署:gunicorn -w 2 -b 0.0.0.0:8000 app:app

九、总结

Flask 是轻量级微框架,核心包含路由、视图、Jinja2 模板、表单处理;开发用app.run,生产用 Gunicorn+Nginx,可快速搭建小型 Web 应用。

相关推荐
alxraves7 小时前
医用超声远程会诊系统:会诊平台的核心架构与功能解析
java·人工智能·架构
我是坏垠7 小时前
Crypto、Cipher与Password:Java加密开发的三个核心概念
java·开发语言·python
测试秃头怪8 小时前
如何评估自动化测试脚本的编写时间和维护工作量?
自动化测试·软件测试·python·功能测试·测试工具·职场和发展·测试用例
幻风_huanfeng8 小时前
软考:高级软件架构师学习笔记----软件架构设计
架构·系统架构·软考·高级系统架构师
姚青&8 小时前
测试左移体系
python·自动化
技术民工之路8 小时前
Python Socket编程零基础实战教程(TCP/UDP通信完整版)
python·tcp/ip·udp
EW Frontier9 小时前
三级跳突破864维动作空间——QMIX-Hierarchical多无人机协同通信方法全解析【附python代码】
开发语言·python·无人机·强化学习·通信资源分配
OCR_133716212759 小时前
技术拆解:国产GPU两大核心路线GPGPU与NPU的架构差异与落地现状
架构
中微极客10 小时前
TensorFlow模型量化实战:从精度到延迟的优化指南
人工智能·python·tensorflow