PythonWeb开发实战教程_Flask快速搭建项目实例

Flask搭建Web项目需理清目录结构、路由逻辑和模板渲染三核心。示例包含基础路由、Jinja2模板、表单处理及蓝图模块化,实现极简博客首页。

用 Flask 搭建一个可运行的 Web 项目并不需要太多前置配置,关键在于理清目录结构、路由逻辑和模板渲染这三块核心。下面以一个极简但完整的博客首页为例,带你从零启动。

初始化项目与基础路由

新建文件夹,用 pip 安装 Flask 后,创建 app.py

```python
from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def home():
    return render_template('index.html', title='我的小站', posts=[
        {'id': 1, 'title': 'Flask 入门第一课'},
        {'id': 2, 'title': 'Jinja2 模板怎么用'}
    ])

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

注意:debug=True 仅用于开发阶段;路由函数必须有返回值,通常为字符串或 render_template 调用。

组织模板与静态资源

Flask 默认识别 templates/static/ 两个文件夹:

  • 在项目根目录下新建 templates/index.html,用 Jinja2 语法插入变量:

    {{ title }}



      {% for post in posts %}
        
    • %7B%7B%20post.title%20%7D%7D

    • %7B%%20endfor%20%%7D
  • static/css/style.css 存放样式,通过 引入

添加简单表单与数据接收

想让用户提交标题和内容?改写路由支持 GET/POST:

```python
@app.route('/add', methods=['GET', 'POST'])
def add_post():
    if request.method == 'POST':
        title = request.form.get('title')
        content = request.form.get('content')
        # 这里可暂存到列表或数据库
        flash('发布成功!')
        return redirect(url_for('home'))
    return render_template('add.html')
```

别忘了在顶部导入:from flask import request, flash, redirect, url_for;模板中用

提交。

用蓝图(Blueprint)拆分模块

项目稍大时,把不同功能分离更易维护。例如新建 blog.py

```python
from flask import Blueprint, render_template

blog_bp = Blueprint('blog', __name__, url_prefix='/blog')

@blog_bp.route('/')
def list_posts():
    return render_template('blog/list.html')
```

然后在 app.py 中注册:app.register_blueprint(blog_bp)。这样 /blog/ 开头的请求就由 blog 模块处理,避免所有逻辑挤在一个文件里。