Flask框架怎么搭建?

访客 python案例 4

本文目录导读:

  1. 环境准备
  2. 创建基础Flask应用
  3. 完整项目结构
  4. 进阶功能实现
  5. HTML模板(使用Jinja2)
  6. 数据库集成(Flask-SQLAlchemy)
  7. 完整的app.py示例
  8. 部署准备
  9. 运行和测试
  10. 实用技巧

我来详细讲解Flask框架的搭建过程。

环境准备

安装Python

确保已安装Python 3.6+,检查版本:

python --version

创建虚拟环境(推荐)

# 创建虚拟环境
python -m venv venv
# 激活虚拟环境
# Windows
venv\Scripts\activate
# macOS/Linux
source venv/bin/activate

安装Flask

pip install flask

创建基础Flask应用

最简单的Flask应用

# app.py
from flask import Flask
# 创建Flask应用实例
app = Flask(__name__)
# 定义路由和视图函数
@app.route('/')
def hello_world():
    return 'Hello, Flask!'
# 启动应用
if __name__ == '__main__':
    app.run(debug=True)

运行应用

python app.py

访问 http://127.0.0.1:5000

完整项目结构

推荐的项目目录结构:

my_flask_app/
├── app.py                 # 应用入口
├── requirements.txt       # 依赖文件
├── venv/                  # 虚拟环境
├── static/               # 静态文件
│   ├── css/
│   │   └── style.css
│   ├── js/
│   │   └── main.js
│   └── images/
├── templates/            # HTML模板
│   ├── base.html
│   ├── index.html
│   └── about.html
└── config.py            # 配置文件

进阶功能实现

配置文件

# config.py
import os
class Config:
    SECRET_KEY = 'your-secret-key'
    SQLALCHEMY_DATABASE_URI = 'sqlite:///site.db'
    SQLALCHEMY_TRACK_MODIFICATIONS = False

路由和请求处理

# app.py 进阶版
from flask import Flask, render_template, request, redirect, url_for, jsonify
from config import Config
app = Flask(__name__)
app.config.from_object(Config)
# 基本路由
@app.route('/')
def index():
    return render_template('index.html', title='首页')
# 动态路由
@app.route('/user/<username>')
def user_profile(username):
    return f'用户: {username}'
# HTTP方法
@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        username = request.form['username']
        password = request.form['password']
        # 处理登录逻辑
        return redirect(url_for('index'))
    return render_template('login.html')
# JSON API
@app.route('/api/data')
def get_data():
    data = {'key': 'value', 'number': 42}
    return jsonify(data)
# 错误处理
@app.errorhandler(404)
def not_found(error):
    return render_template('404.html'), 404

HTML模板(使用Jinja2)

基础模板

<!-- templates/base.html -->
<!DOCTYPE html>
<html>
<head>{% block title %}{% endblock %}</title>
    <link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}">
</head>
<body>
    <nav>
        <a href="/">首页</a>
        <a href="/about">lt;/a>
    </nav>
    {% block content %}
    {% endblock %}
    <script src="{{ url_for('static', filename='js/main.js') }}"></script>
</body>
</html>

继承模板

<!-- templates/index.html -->
{% extends "base.html" %}
{% block title %}首页{% endblock %}
{% block content %}
    <h1>欢迎来到Flask应用</h1>
    <p>这是一个示例页面</p>
{% endblock %}

数据库集成(Flask-SQLAlchemy)

安装数据库扩展

pip install flask-sqlalchemy

数据库模型

from flask_sqlalchemy import SQLAlchemy
from datetime import datetime
db = SQLAlchemy()
class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)
    created_at = db.Column(db.DateTime, default=datetime.utcnow)
    def __repr__(self):
        return f'<User {self.username}>'

数据库操作

# 初始化数据库
with app.app_context():
    db.create_all()
# 添加数据
user = User(username='admin', email='admin@example.com')
db.session.add(user)
db.session.commit()
# 查询数据
users = User.query.all()
user = User.query.filter_by(username='admin').first()

完整的app.py示例

from flask import Flask, render_template, request, redirect, url_for, flash
from flask_sqlalchemy import SQLAlchemy
from config import Config
app = Flask(__name__)
app.config.from_object(Config)
db = SQLAlchemy(app)
# 用户模型
class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)
@app.route('/')
def index():
    users = User.query.all()
    return render_template('index.html', users=users)
@app.route('/add_user', methods=['GET', 'POST'])
def add_user():
    if request.method == 'POST':
        username = request.form['username']
        email = request.form['email']
        new_user = User(username=username, email=email)
        db.session.add(new_user)
        db.session.commit()
        flash('用户添加成功!', 'success')
        return redirect(url_for('index'))
    return render_template('add_user.html')
if __name__ == '__main__':
    with app.app_context():
        db.create_all()
    app.run(debug=True)

部署准备

requirements.txt

Flask==2.3.0
Flask-SQLAlchemy==3.0.0
gunicorn==20.1.0  # 生产环境使用

生成依赖文件

pip freeze > requirements.txt

安装依赖

pip install -r requirements.txt

运行和测试

开发模式

python app.py

生产模式(使用Gunicorn)

gunicorn -w 4 -b 0.0.0.0:8000 app:app

实用技巧

  1. 调试模式:开发时设置 debug=True,会自动重载
  2. 环境变量:敏感信息使用环境变量存储
  3. ORM使用:尽量使用SQLAlchemy而不是直接SQL
  4. 蓝图:大型项目使用蓝图模块化
  5. 缓存:使用Flask-Caching提高性能

这样你就完成了基本的Flask框架搭建!根据你的项目需求,还可以添加表单验证、用户认证、RESTful API等功能。

标签: Flask框架 Python Web

抱歉,评论功能暂时关闭!