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

相关推荐
m0_602857769 分钟前
如何提升SQL存储过程逻辑复用_封装通用存储过程函数
jvm·数据库·python
志栋智能1 小时前
运维超自动化:构建弹性IT架构的关键支撑
运维·服务器·网络·人工智能·架构·自动化
傻啦嘿哟1 小时前
如何在 Python 中使用 colorama 库来给输出添加颜色
开发语言·python
ai产品老杨1 小时前
GB28181与RTSP全协议兼容之道:基于Docker与微服务架构的AI视频中台架构解析(附源码交付方案)
docker·微服务·架构
池央1 小时前
基于腾讯云架构部署OpenClaw并实现与Telegram终端集成的全链路技术解析与实践指南
架构·云计算·腾讯云·腾讯云openclaw玩虾大赛
薛定猫AI1 小时前
【深度解析】Open Design:用本地优先架构重塑 AI UI 生成工作流
人工智能·ui·架构
forEverPlume1 小时前
mysql如何实现高可用集群架构_基于MHA环境搭建与部署
jvm·数据库·python
方安乐6 小时前
python之向量、向量和、向量点积
开发语言·python·numpy
candyTong7 小时前
一觉醒来,大模型就帮我排查完页面性能问题
前端·javascript·架构
zh1570238 小时前
JavaScript中WorkerThreads解决服务端计算瓶颈
jvm·数据库·python