目录

一、准备工作

二、安装Flask

三、创建你的第一个Flask应用

创建一个新的Python文件

编写Flask应用代码

运行Flask应用

四、创建一个简单的博客系统

定义路由和文章列表

创建模板文件

运行并测试博客系统

五、使用数据库存储用户信息

安装Flask-SQLAlchemy

修改app.py文件

六、总结与展望


Flask是一个轻量级的Web应用框架,它使用Python编写,以简洁、灵活和易扩展著称。Flask的核心功能包括请求响应处理、模板渲染和URL路由,通过扩展组件,可以轻松实现数据库访问、表单验证和用户身份认证等功能。本文旨在帮助新手从零开始搭建一个简单的Web应用,通过丰富的案例和代码,让你轻松上手Flask。

一、准备工作

在开始之前,你需要确保你的计算机上已经安装了Python。Python是一种广泛使用的编程语言,具有简洁易读、学习曲线平缓等优点。你可以从Python的官方网站下载并安装适合你操作系统的Python版本。

安装完Python后,你还需要一个IDE(集成开发环境)来编写和运行你的Flask应用。PyCharm是一个流行的Python IDE,它提供了丰富的功能和友好的用户界面,非常适合初学者使用。你可以从PyCharm的官方网站下载并安装社区版。

二、安装Flask

安装Flask非常简单,你可以使用pip命令来安装。打开你的命令行工具(Windows用户使用cmd或PowerShell,Mac/Linux用户使用Terminal),输入以下命令:
pip install flask
这条命令会自动下载并安装最新版本的Flask及其依赖库。

三、创建你的第一个Flask应用

创建一个新的Python文件

在你的IDE中,创建一个新的Python文件,命名为app.py。

编写Flask应用代码

在app.py文件中,编写以下代码:

from flask import Flask  
  
app = Flask(__name__)  
  
@app.route('/')  
def hello_world():  
    return 'Hello, World!'  
  
if __name__ == '__main__':  
    app.run(debug=True)

这段代码创建了一个Flask应用,并定义了一个路由/,当用户访问这个路由时,会返回一个简单的字符串'Hello, World!'。

运行Flask应用

保存app.py文件后,在命令行中切换到该文件所在的目录,并运行以下命令:
python app.py
此时,你的Flask应用会启动一个本地Web服务器,并在默认端口5000上监听请求。你可以打开浏览器,访问http://127.0.0.1:5000/,你会看到一个页面显示'Hello, World!'。

四、创建一个简单的博客系统

接下来,我们将扩展我们的Flask应用,创建一个简单的博客系统,让用户可以查看最新的文章列表。

定义路由和文章列表

在app.py文件中,添加以下代码:

from flask import Flask, render_template  
  
app = Flask(__name__)  
  
articles = [  
    {'title': 'First Post', 'content': 'This is the content of the first post.'},  
    {'title': 'Second Post', 'content': 'Here is another article.'}  
]  
  
@app.route('/')  
def home():  
    return render_template('home.html', articles=articles)  
  
if __name__ == '__main__':  
    app.run(debug=True)

这段代码定义了一个路由/来处理主页请求,并创建了一个模拟的文章列表。我们使用Flask内置的模板引擎来渲染HTML页面,让网页看起来更美观。

创建模板文件

在你的项目目录中,创建一个名为templates的文件夹,并在其中创建一个名为home.html的文件。在home.html文件中,编写以下代码:

<!DOCTYPE html>  
<html lang="en">  
<head>  
    <meta charset="UTF-8">  
    <title>Blog</title>  
</head>  
<body>  
    <h1>My Blog</h1>  
    <ul>  
        {% for article in articles %}  
            <li>  
                <h2>{{ article.title }}</h2>  
                <p>{{ article.content }}</p>  
            </li>  
        {% endfor %}  
    </ul>  
</body>  
</html>

这段代码使用Jinja2模板引擎的语法来渲染文章列表。当你访问主页时,Flask会将articles变量传递给模板,并在页面上显示每篇文章的标题和内容。

运行并测试博客系统

保存所有文件后,重新运行你的Flask应用。打开浏览器,访问http://127.0.0.1:5000/,你会看到一个页面显示你的博客文章列表。

五、使用数据库存储用户信息

随着你的应用变得更加复杂,你可能需要处理数据库连接、用户认证等功能。接下来,我们将展示如何使用SQLite数据库存储用户信息,并使用Flask-SQLAlchemy插件来简化数据库操作。

安装Flask-SQLAlchemy

在命令行中,运行以下命令来安装Flask-SQLAlchemy:
pip install flask-sqlalchemy

修改app.py文件

在app.py文件中,添加以下代码来配置数据库连接,并创建一个用户模型:

from flask import Flask, request, redirect, url_for  
from flask_sqlalchemy import SQLAlchemy  
  
app = Flask(__name__)  
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///users.db'  
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)  
    password = db.Column(db.String(120), nullable=False)  
  
@app.route('/register', methods=['GET', 'POST'])  
def register():  
    if request.method == 'POST':  
        new_user = User(username=request.form['username'], password=request.form['password'])  
        db.session.add(new_user)  
        db.session.commit()  
        return redirect(url_for('login'))  
    return '''  
    <form method="post">  
        Username: <input type="text" name="username"><br>  
        Password: <input type="password" name="password"><br>  
        <input type="submit" value="Register">  
    </form>  
    '''  
  
if __name__ == '__main__':  
    db.create_all()  # 创建数据库表  
    app.run(debug=True)

这段代码配置了一个SQLite数据库,并创建了一个用户模型。我们定义了一个路由/register来处理用户注册请求,当用户提交表单时,会将新用户信息保存到数据库中。

运行并测试用户注册功能
保存所有文件后,重新运行你的Flask应用。打开浏览器,访问http://127.0.0.1:5000/register,你会看到一个注册表单。填写表单并提交后,用户信息将被保存到数据库中,并重定向到登录页面(尽管登录页面尚未实现)。

六、总结与展望

通过本文,你已经从零开始搭建了一个简单的Flask Web应用,并学会了如何创建路由、渲染模板、处理表单提交和使用数据库存储数据。Flask是一个灵活且易于扩展的框架,你可以根据需要添加更多功能,如用户认证、文件上传、电子邮件发送等。

随着你对Flask理解的加深,你将能够构建更加复杂和强大的Web应用。Flask的插件库非常丰富,你可以使用现成的插件来简化开发工作。同时,你也可以学习Flask的底层原理,以便更好地理解其工作原理并优化你的应用。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐