在本节中,我们将带您走进Flask
的世界,通过一个完整的项目案例,让您从小白逐步上手。我们的目标是构建一个简单的博客系统
,您将学习如何创建、读取、更新和删除(CRUD)博客文章。通过这个项目,您将掌握Flask
的基本概念以及常用功能。
项目背景
在这次项目中,我们将创建一个博客应用
,使用户能够:
- 浏览所有博客文章
- 创建新文章
- 编辑已有文章
- 删除文章
项目结构
我们的项目将包含以下主要文件和目录结构:
1 2 3 4 5 6 7 8 9 10 11
| flask_blog/ │ ├── app.py # 主应用程序文件 ├── models.py # 数据模型定义 ├── templates/ # HTML模板文件 │ ├── index.html # 显示文章列表 │ ├── create.html # 创建文章页面 │ └── edit.html # 编辑文章页面 ├── static/ # 静态文件(CSS, JS等) │ └── style.css # 样式文件 └── README.md # 项目说明文件
|
环境配置
在开始之前,请确保您已经安装了以下环境依赖:
1
| pip install Flask Flask-SQLAlchemy
|
编写代码
1. 创建应用程序文件 app.py
首先,我们将创建应用的主文件,初始化Flask
应用,并设置数据库连接。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| from flask import Flask, render_template, request, redirect, url_for from models import db, BlogPost
app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///blog.db' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db.init_app(app)
with app.app_context(): db.create_all()
@app.route('/') def index(): posts = BlogPost.query.all() return render_template('index.html', posts=posts)
if __name__ == "__main__": app.run(debug=True)
|
2. 创建数据模型文件 models.py
接下来,我们创建models.py
来定义数据模型。
1 2 3 4 5 6 7 8 9 10 11
| from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
class BlogPost(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(100), nullable=False) content = db.Column(db.Text, nullable=False)
def __repr__(self): return f'<BlogPost {self.title}>'
|
3. HTML模板
index.html
我们将创建一个首页,用于显示所有博客文章的列表。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <title>博客列表</title> <link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}"> </head> <body> <h1>博客文章</h1> <a href="{{ url_for('create') }}">创建新文章</a> <ul> {% for post in posts %} <li> <h2>{{ post.title }}</h2> <p>{{ post.content }}</p> <a href="{{ url_for('edit', post_id=post.id) }}">编辑</a> <a href="{{ url_for('delete', post_id=post.id) }}">删除</a> </li> {% endfor %} </ul> </body> </html>
|
4. 实现CRUD功能
在app.py
中,继续添加创建、编辑和删除文章的路由。
创建文章
1 2 3 4 5 6 7 8 9 10
| @app.route('/create', methods=['GET', 'POST']) def create(): if request.method == 'POST': title = request.form['title'] content = request.form['content'] new_post = BlogPost(title=title, content=content) db.session.add(new_post) db.session.commit() return redirect(url_for('index')) return render_template('create.html')
|
编辑文章
1 2 3 4 5 6 7 8 9
| @app.route('/edit/<int:post_id>', methods=['GET', 'POST']) def edit(post_id): post = BlogPost.query.get_or_404(post_id) if request.method == 'POST': post.title = request.form['title'] post.content = request.form['content'] db.session.commit() return redirect(url_for('index')) return render_template('edit.html', post=post)
|
删除文章
1 2 3 4 5 6
| @app.route('/delete/<int:post_id>') def delete(post_id): post = BlogPost.query.get_or_404(post_id) db.session.delete(post) db.session.commit() return redirect(url_for('index'))
|
总结
通过这个简单的博客系统
项目,您已经学习了如何使用Flask
创建一个基本的Web应用程序,掌握了路由
、数据库交互
、以及模板渲染的基本操作。接下来,您可以在此基础上继续扩展功能,增加用户认证、评论系统等,使您的应用更加完善。
希望这个项目能帮助您更好地理解Flask
的使用,开启您的Web开发之旅!