初识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 应用。

相关推荐
前端技术2 小时前
ArkTS第三章:声明式UI开发实战
java·前端·人工智能·python·华为·鸿蒙
永霖光电_UVLED2 小时前
氧化镓高体积热容的特性,集成高介电常数界面的结侧冷却架构
人工智能·生成对抗网络·架构·汽车·制造
疯狂成瘾者2 小时前
.pyc格式文件
python
鬼圣2 小时前
Python 生成器与迭代器详解
python
西魏陶渊明2 小时前
解决异步挑战:Reactor Context 实现响应式上下文传递
开发语言·python
onebyte8bits2 小时前
NestJS 系列教程(十八):文件上传与对象存储架构(Multer + S3/OSS + 访问控制)
前端·架构·node.js·状态模式·nestjs
2501_948114243 小时前
从 Claude Code 源码泄露看 2026 年 Agent 架构演进与工程化实践
大数据·人工智能·架构
疯狂成瘾者3 小时前
增强型大模型代理
python
小李云雾3 小时前
FastAPI 后端开发:文件上传 + 表单提交
开发语言·python·lua·postman·fastapi