为了账号安全,请及时绑定邮箱和手机立即绑定

9.2 Flask框架

标签:
Python

Flask 是一个轻量级的 Python Web 开发框架,它易于上手,适合构建小型到中型的 Web 应用。在这一章节中,我们将详细介绍 Flask 的基本概念、组件和用法。为了便于理解,我们将使用实例来展示如何使用 Flask 构建一个简单的 Web 应用。

9.2.1 安装和创建 Flask 应用

首先,使用 pip 安装 Flask:

pip install flask

接下来,创建一个名为 app.py 的文件,输入以下代码:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    return 'Hello, World!'

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

这个简单的程序创建了一个 Flask 应用,并定义了一个根路由(/),该路由将返回 “Hello, World!”。运行 app.py

python app.py

打开浏览器,访问 http://127.0.0.1:5000/,你将看到 “Hello, World!”。

9.2.2 路由和视图函数

在 Flask 中,路由是 URL 到 Python 函数的映射。视图函数是处理特定路由的请求的函数。以下是一个带有两个路由的示例:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
    return 'This is the index page.'

@app.route('/hello')
def hello():
    return 'Hello, World!'

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

这个例子中,我们定义了两个路由://hello。访问对应的 URL 时,将显示相应的视图函数返回的内容。

路由变量

你可以在路由中使用 <variable> 的形式定义变量,这样可以将 URL 的一部分作为参数传递给视图函数。例如:

@app.route('/user/<username>')
def show_user_profile(username):
    return f'User: {username}'

在这个例子中,访问 /user/<username>(如 /user/john)将显示 “User: john”。

9.2.3 请求和响应

Flask 提供了 request 对象,用于访问请求数据,如表单、查询参数、文件等。以下是一个处理表单提交的示例:

from flask import Flask, request

app = Flask(__name__)

@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        return f'Welcome, {request.form["username"]}'
    else:
        return '''
            <form method="post">
                <p>Username: <input type="text" name="username"></p>
                <p>Password: <input type="password" name="password"></p>
                <p><input type="submit" value="Login"></p>
            </form>
        '''

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

在这个例子中,我们定义了一个 /login 路由,该路由接受 GET 和 POST 请求。当用户访问 /login 时,将显示一个登录表单。填写表单并提交后,将显示 ”Welcome, username“。

9.2.4 模板

Flask 使用 Jinja2 模板引擎来生成动态 HTML。首先,创建一个名为 templates 的文件夹,然后在其中创建一个名为 login.html 的文件,内容如下:

<form method="post">
    <p>Username: <input type="text" name="username"></p>
    <p>Password: <input type="password" name="password"></p>
    <p><input type="submit" value="Login"></p>
</form>

修改 app.py,使用 render_template 函数渲染模板:

from flask import Flask, request, render_template

app = Flask(__name__)

@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        return f'Welcome, {request.form["username"]}'
    else:
        return render_template('login.html')

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

现在,当用户访问 /login 时,将使用 login.html 模板渲染页面。

9.2.5 静态文件

通常,Web 应用需要提供一些静态文件,如 CSS、JavaScript 和图像文件。在 Flask 中,将这些文件放在名为 static 的文件夹中。例如,创建一个名为 main.css 的 CSS 文件,将其放在 static/css 文件夹中。

在模板中,使用 url_for 函数生成静态文件的 URL。修改 login.html,添加一个链接到 main.css 的样式表:

<!DOCTYPE html>
<html>
<head>
    <title>Login</title>
    <link rel="stylesheet" href="{{ url_for('static', filename='css/main.css') }}">
</head>
<body>
    <form method="post">
        <p>Username: <input type="text" name="username"></p>
        <p>Password: <input type="password" name="password"></p>
        <p><input type="submit" value="Login"></p>
    </form>
</body>
</html>

9.2.6 错误处理

Flask 允许你为特定的 HTTP 错误代码定义自定义错误处理程序。这对于显示友好的错误页面非常有用。例如,下面是一个处理 404(未找到)错误的示例:

from flask import Flask, render_template

app = Flask(__name__)

@app.errorhandler(404)
def page_not_found(error):
    return render_template('404.html'), 404

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

在这个例子中,我们定义了一个名为 page_not_found 的错误处理程序,用于处理 404 错误。当用户访问不存在的页面时,将显示一个自定义的 404 页面。

小结

这一章节介绍了 Flask 的基本概念和用法,包括路由、请求、响应、模板和静态文件。通过这些概念,你可以使用 Flask 构建一个基本的 Web 应用。当然,Flask 还有许多其他功能,如蓝图(用于组织大型应用)、扩展(用于添加额外功能)以及对数据库的支持等。这里只是为你提供了一个入门,要深入了解 Flask,建议阅读官方文档和其他教程。

祝你学习愉快!

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消