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开发之旅!

29 Flask 项目结构解析

29 Flask 项目结构解析

在学习 Flask 的过程中,正确理解项目结构非常关键。一个合理的项目结构能够使代码更易于理解和维护。在本节中,我们将通过一个简单的案例来解析 Flask 项目的基本结构。

项目目录结构

假设我们要创建一个基本的 Flask 应用,我们的目录结构可能如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
my_flask_app/

├── app/
│ ├── __init__.py
│ ├── routes.py
│ ├── models.py
│ └── templates/
│ └── index.html

├── config.py
├── run.py
└── requirements.txt

目录及文件解析

  1. app/ 目录

    • 这个目录是应用程序的核心部分,包含了所有与应用相关的文件和代码。
    • __init__.py: 这个文件会初始化 Flask 应用。在这里,我们通常会创建应用实例,并注册蓝图和配置。
    • routes.py: 在此文件中定义应用的路由。路由是 URL 与其对应的处理函数之间的映射。
    • models.py: 此文件用于定义数据模型,通常与 ORM(如 SQLAlchemy)结合使用。
    • templates/: 此目录存放所有的 HTML 模板文件。 Flask 使用 Jinja2 模板引擎渲染 HTML。
  2. config.py

    • 配置文件用于存放应用的配置信息,如数据库连接字符串、调试模式等。合理的配置管理可以使项目更加灵活。
  3. run.py

    • 入口文件,运行应用的主要脚本。通常在这里会初始化应用并调用 app.run() 方法。
  4. requirements.txt

    • 该文件用于列出项目依赖的 Python 包。 Flask 支持使用 pip 来安装依赖,简单执行 pip install -r requirements.txt 即可。

示例代码

下面是各个重要文件的简要示例。

app/__init__.py

1
2
3
4
5
6
7
8
9
10
from flask import Flask

def create_app():
app = Flask(__name__)
app.config.from_object('config')

with app.app_context():
from . import routes

return app

app/routes.py

1
2
3
4
5
6
7
from flask import render_template, Blueprint

bp = Blueprint('main', __name__)

@bp.route('/')
def index():
return render_template('index.html')

app/templates/index.html

1
2
3
4
5
6
7
8
9
10
11
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Hello, Flask!</title>
</head>
<body>
<h1>Hello, Flask!</h1>
</body>
</html>

run.py

1
2
3
4
5
6
from app import create_app

app = create_app()

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

config.py

1
2
3
class Config:
SECRET_KEY = 'your_secret_key'
# 其他配置项

requirements.txt

1
Flask==2.0.1

总结

通过对 Flask 项目结构的解析,我们可以看到一个标准的 Flask 应用应该如何组织。合理的代码分层和模块化能够帮助我们更好地管理和扩展应用。随着项目的复杂度增加,我们可以逐渐引入更多的功能模块,而保持结构的清晰性与可维护性。

构建你的第一个 Web 应用

构建你的第一个 Web 应用

项目结构

在开始之前,我们需要设置一个基本的项目结构。推荐的结构如下:

1
2
3
4
5
6
7
my_flask_app/

├── app.py
├── templates/
│ └── index.html
└── static/
└── style.css

安装 Flask

首先,确保你已经安装了 Flask。可以通过以下命令安装:

1
pip install Flask

创建 Flask 应用

app.py 中创建基本的 Flask 应用:

1
2
3
4
5
6
7
8
9
10
from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def home():
return render_template('index.html')

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

这里,我们导入了 Flaskrender_template,并创建了一个简单的路由 /

创建模板

接下来,在 templates 目录下创建 index.html 文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
<title>Flask Demo</title>
</head>
<body>
<h1>欢迎使用 Flask!</h1>
<p>这是我的第一个 Flask 应用。</p>
</body>
</html>

这里我们使用 {{ url_for('static', filename='style.css') }} 来引用静态资源。

添加样式

static 目录下创建 style.css 文件,加入一些简单的样式:

1
2
3
4
5
6
7
8
9
10
body {
font-family: Arial, sans-serif;
background-color: #f4f4f4;
color: #333;
padding: 20px;
}

h1 {
color: #4CAF50;
}

运行应用

在终端中,导航到项目目录并运行应用:

1
python app.py

打开浏览器,访问 http://127.0.0.1:5000/,你会看到你的应用界面。

添加更多路由

让我们为应用添加一个新的路由 /about

1
2
3
@app.route('/about')
def about():
return "<h2>关于我们</h2><p>这是一个关于页面。</p>"

重启 Flask 应用并访问 http://127.0.0.1:5000/about,你会看到新的关于页面。

使用表单

我们来添加一个简单的表单来收集用户输入。在 index.html 中加入以下代码:

1
2
3
4
5
<form action="/submit" method="post">
<label for="name">请输入您的名字:</label>
<input type="text" id="name" name="name">
<input type="submit" value="提交">
</form>

app.py 中添加表单处理路由:

1
2
3
4
5
6
from flask import request

@app.route('/submit', methods=['POST'])
def submit():
name = request.form['name']
return f"<h2>您好, {name}!</h2>"

现在,当用户输入名字并提交时,会看到一个欢迎的个性化消息。

总结

到此,你已经完成了一个简单的 Flask 应用,从创建项目结构到添加样式、路由和表单功能。掌握这些基础后,你可以继续扩展应用,尝试数据库集成、用户身份验证等更复杂的功能。Flask 为开发提供了灵活和丰富的工具,让我们可以轻松构建出强大的 Web 应用。