flask快速入门

目录
  • Flask 初始化和路由处理
  • 蓝图的定义和注册
  • 模板渲染和传递变量
  • 静态文件的处理
  • 表单的处理
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
from flask import Flask, render_template, request, redirect, url_for, flash
from flask_wtf import FlaskForm
from wtforms import StringField, IntegerField, SubmitField
from wtforms.validators import DataRequired

# 初始化 Flask 应用
app = Flask(__name__)
# 设置表单秘钥
app.config['SECRET_KEY'] = 'mysecretkey'

# 定义表单类
class UserForm(FlaskForm):
    name = StringField('Name', validators=[DataRequired()])
    age = IntegerField('Age', validators=[DataRequired()])
    submit = SubmitField('Submit')

# 定义数据
users = [
    {'name': 'Alice', 'age': 25},
    {'name': 'Bob', 'age': 30},
    {'name': 'Charlie', 'age': 35}
]

# 设置路由和视图函数,展示用户列表
@app.route('/')
def user_list():
    return render_template('user_list.html', users=users)

# 设置路由和视图函数,展示用户信息
@app.route('/user/<name>')
def user_info(name):
    # 根据用户名获取用户信息
    user = None
    for u in users:
        if u['name'] == name:
            user = u
            break
    if not user:
        return 'User not found'
    # 返回渲染后的 HTML 模板
    return render_template('user_info.html', user=user)

# 定义蓝图,为管理员提供 API
from .admin_api import admin_api_blueprint
app.register_blueprint(admin_api_blueprint, url_prefix='/api/admin')

# 设置路由和视图函数,展示添加用户表单
@app.route('/add_user', methods=['GET', 'POST'])
def add_user():
    # 创建表单对象
    form = UserForm()
    if form.validate_on_submit():
        # 获取表单数据
        name = form.name.data.strip()
        age = form.age.data
        # 添加用户
        users.append({'name': name, 'age': age})
        # 显示成功信息
        flash(f'User {name} added successfully.')
        # 重定向到用户列表页面
        return redirect(url_for('user_list'))
    # 返回渲染后的 HTML 模板
    return render_template('add_user.html', form=form)

# 设置路由和视图函数,展示静态文件
@app.route('/static_file')
def static_file():
    # 返回静态文件内容
    return app.send_static_file('example.txt')

if __name__ == '__main__':
    # 启动 Web 服务器
    app.run(debug=True)

随机文章