当前位置: 首页 > news >正文

Flask + SQLite 简单案例

# Flask + SQLite 简单案例

下面是一个使用Flask和SQLite的完整案例,实现一个简单的用户管理后台系统。

## 项目结构
```
flask_sqlite_demo/
├── app.py              # 主应用文件
├── models.py           # 数据库模型
├── templates/          # 模板文件夹
│   ├── base.html       # 基础模板
│   ├── index.html      # 首页
│   ├── add_user.html   # 添加用户页面
│   └── edit_user.html  # 编辑用户页面
└── instance/           # 实例文件夹(SQLite数据库将创建在这里)
    └── app.db          # SQLite数据库文件
```

## 代码实现

### 1. app.py
```python
from flask import Flask, render_template, request, redirect, url_for, flash
from models import db, User

app = Flask(__name__)
app.config['SECRET_KEY'] = 'your-secret-key'
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///app.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

# 初始化数据库
db.init_app(app)

# 创建数据库表
@app.before_first_request
def create_tables():
    db.create_all()

@app.route('/')
def index():
    users = User.query.all()
    return render_template('index.html', users=users)

@app.route('/add', methods=['GET', 'POST'])
def add_user():
    if request.method == 'POST':
        username = request.form['username']
        email = request.form['email']
        
        # 检查用户名是否已存在
        if User.query.filter_by(username=username).first():
            flash('用户名已存在!', 'error')
            return redirect(url_for('add_user'))
        
        # 创建新用户
        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')

@app.route('/edit/<int:user_id>', methods=['GET', 'POST'])
def edit_user(user_id):
    user = User.query.get_or_404(user_id)
    
    if request.method == 'POST':
        user.username = request.form['username']
        user.email = request.form['email']
        db.session.commit()
        
        flash('用户信息更新成功!', 'success')
        return redirect(url_for('index'))
    
    return render_template('edit_user.html', user=user)

@app.route('/delete/<int:user_id>')
def delete_user(user_id):
    user = User.query.get_or_404(user_id)
    db.session.delete(user)
    db.session.commit()
    
    flash('用户删除成功!', 'success')
    return redirect(url_for('index'))

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

### 2. models.py
```python
from flask_sqlalchemy import SQLAlchemy

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)
    
    def __repr__(self):
        return f'<User {self.username}>'
```

### 3. templates/base.html
```html
<!DOCTYPE html>
<html>
<head>
    <title>Flask SQLite Demo</title>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
</head>
<body>
    <div class="container mt-4">
        {% with messages = get_flashed_messages(with_categories=true) %}
            {% if messages %}
                {% for category, message in messages %}
                    <div class="alert alert-{{ category }}">{{ message }}</div>
                {% endfor %}
            {% endif %}
        {% endwith %}
        
        {% block content %}{% endblock %}
    </div>
</body>
</html>

5558

相关文章:

  • 函数栈帧的创建和销毁
  • docker部署Open WebUI下载速度慢解决方法
  • Linux ACPI - ACPI系统描述表架构(2)
  • Debezium Binlog解析与事件转换流程详解
  • Oracle OCP认证考试考点详解083系列06
  • MCP智能体多Agent协作系统设计(Multi-Agent Cooperation)
  • 冯诺依曼结构与哈佛架构深度解析
  • 今天python练习题
  • TensorFlow深度学习实战——基于循环神经网络的词性标注模型
  • TS 元组
  • 深入探索 Java 区块链技术:从核心原理到企业级实践
  • 8.1 Python+Docker+企业微信集成实战:自动化报告生成与CI/CD部署全攻略
  • jetson orin nano super AI模型部署之路(八)tensorrt C++ api介绍
  • HTML01:HTML基本结构
  • 使用Scrapy构建高效网络爬虫:从入门到数据导出全流程
  • jakarta.mail(javax.mail)包中关于SMTP协议支持的属性参数配置
  • 5.7/Q1,GBD数据库最新文章解读
  • 深度学习的简单介绍
  • 软考 系统架构设计师系列知识点之杂项集萃(53)
  • PCB叠层设计方案
  • 这 3 种食物,不要放进微波炉!第 1 个就大意了
  • 菲律宾首都机场航站楼外发生汽车冲撞事故致2死多伤
  • 给3亿老人爆改房子,是门好生意吗?
  • 陈芋汐世界杯总决赛卫冕夺冠,全红婵无缘三大赛“全满贯”
  • 西部航空回应飞机上卖彩票:与重庆福彩合作,仅部分航班售卖
  • 苹果手机为何无法在美制造?全球供应链难迁移