28 Flask实战项目介绍

28 Flask实战项目介绍

在本节中,我们将带您走进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开发之旅!

28 Flask实战项目介绍

https://zglg.work/flask/28/

作者

AI教程网

发布于

2024-08-08

更新于

2024-08-10

许可协议