前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一个超级好用的Web开发库!

一个超级好用的Web开发库!

作者头像
老表
发布2024-07-31 19:30:46
1140
发布2024-07-31 19:30:46
举报
文章被收录于专栏:用户2910674的专栏

简单聊聊

Flask 是一个轻量级的 Web 应用框架,以其简单易用而闻名。作为一个灵活的微框架,它允许开发者自由地选择和整合各种第三方库。无论你是 Web 开发的新手,还是有丰富经验的老手,Flask 都能为你提供强大的支持。今天,我们将从 Flask 的基础入门开始,一步步深入探讨它的高级特性,并通过丰富的代码示例来展示如何高效地使用它。

入门:Hello Flask!

在开始我们的 Flask 之旅之前,确保你已经安装了 Flask。你可以通过以下命令安装:

代码语言:javascript
复制
pip install flask

安装完成后,让我们来写一个最简单的 Flask 应用:

代码语言:javascript
复制
from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, 简说Python!'

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

保存上述代码到一个名为 app.py 的文件中,然后在命令行中运行:

代码语言:javascript
复制
python app.py

打开浏览器,访问 http://127.0.0.1:5000/,你将看到“Hello, 简说Python!”的字样。这就是你第一个 Flask 应用程序!

路由和视图函数

在 Flask 中,路由用于将 URL 与函数绑定在一起。通过装饰器 @app.route,你可以定义不同的 URL 路径,并指定相应的处理函数。

动态 URL

有时,我们需要处理动态 URL。例如,处理用户 ID:

代码语言:javascript
复制
@app.route('/user/<username>')
def show_user_profile(username):
    return f'User {username}'

当访问 http://127.0.0.1:5000/user/pythonbrief 时,页面会显示 “User pythonbrief”。

URL 变量类型

你还可以指定 URL 变量的类型,例如整数类型:

代码语言:javascript
复制
@app.route('/post/<int:post_id>')
def show_post(post_id):
    return f'Post {post_id}'

访问 http://127.0.0.1:5000/post/123,页面会显示 “Post 123”。

模板渲染

对于更复杂的页面,仅返回简单的字符串是不够的。Flask 使用 Jinja2 模板引擎来渲染动态 HTML。

基础模板

首先,创建一个名为 templates 的目录,并在其中创建一个文件 index.html

代码语言:javascript
复制
<!doctype html>
<html>
<head>
    <title>{{ title }}</title>
</head>
<body>
    <h1>{{ heading }}</h1>
    <p>{{ content }}</p>
</body>
</html>

然后,在 app.py 中使用 render_template 函数渲染该模板:

代码语言:javascript
复制
from flask import render_template

@app.route('/')
def index():
    return render_template('index.html', title='和老表学Python', heading='Python Flask', content='Flask 是一个超级好用的 web 库')

这样,你就可以将动态数据传递给 HTML 模板,实现动态网页的展示,是不是超级简单的。

表单处理

处理表单是 Web 开发的常见任务。Flask 提供了简洁的方式来处理表单数据。

创建表单

在模板文件 form.html 中创建一个简单的表单:

代码语言:javascript
复制
<!doctype html>
<html>
<head>
<title>Form Example</title>
</head>
<body>
<h1>Submit a Form</h1>
<form method="POST">
<label for="name">Name:</label>
<input type="text" name="name" id="name">
<input type="submit" value="Submit">
</form>
</body>
</html>

处理表单数据

app.py 中添加处理表单提交的视图函数:

代码语言:javascript
复制
from flask import request

@app.route('/submit', methods=['GET', 'POST'])
def submit():
    if request.method == 'POST':
        name = request.form['name']
        return f'Hello, {name}!'
    return render_template('form.html')

访问 http://127.0.0.1:5000/submit,提交表单后页面会显示输入的名字。

数据库集成

大多数 Web 应用都需要与数据库交互。Flask 支持多种数据库,包括 SQLite、MySQL 和 PostgreSQL。这里我们将介绍如何使用 Flask-SQLAlchemy 集成 SQLite 数据库。

安装 Flask-SQLAlchemy

代码语言:javascript
复制
pip install flask-sqlalchemy

配置数据库

app.py 中配置数据库连接:

代码语言:javascript
复制
from flask_sqlalchemy import SQLAlchemy

app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db'
db = SQLAlchemy(app)

创建模型

定义一个用户模型:

代码语言:javascript
复制
class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)

    def __repr__(self):
        return f'<User {self.username}>'

初始化数据库

在首次运行应用时,创建数据库表:

代码语言:javascript
复制
with app.app_context():
    db.create_all()

数据库操作

添加用户:

代码语言:javascript
复制
@app.route('/add_user/<username>/<email>')
def add_user(username, email):
    user = User(username=username, email=email)
    db.session.add(user)
    db.session.commit()
    return f'Added user {username}'

查询用户:

代码语言:javascript
复制
@app.route('/get_user/<username>')
def get_user(username):
    user = User.query.filter_by(username=username).first()
    if user:
        return f'User {user.username}, Email {user.email}'
    return 'User not found'

用户认证

在现实世界的应用中,用户认证是必不可少的。Flask 提供了 Flask-Login 库来简化用户认证过程。

安装 Flask-Login

代码语言:javascript
复制
pip install flask-login

配置 Flask-Login

app.py 中进行配置:

代码语言:javascript
复制
from flask_login importLoginManager,UserMixin, login_user, login_required, logout_user, current_user

login_manager =LoginManager()
login_manager.init_app(app)

classUser(UserMixin, 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)

@login_manager.user_loader
defload_user(user_id):
returnUser.query.get(int(user_id))

登录视图

代码语言:javascript
复制
@app.route('/login', methods=['GET', 'POST'])
deflogin():
if request.method =='POST':
        username = request.form['username']
        password = request.form['password']
        user =User.query.filter_by(username=username).first()
if user and user.password == password:
            login_user(user)
return'Logged in successfully'
return render_template('login.html')

受保护的视图

代码语言:javascript
复制
@app.route('/protected')
@login_required
def protected():
    return f'Hello, {current_user.username}! This is a protected page.'

登出视图

代码语言:javascript
复制
@app.route('/logout')
@login_required
def logout():
    logout_user()
    return 'Logged out successfully'

高级功能

中间件

中间件是在每个请求之前或之后运行的函数。你可以使用中间件来执行日志记录、处理会话等任务。

代码语言:javascript
复制
@app.before_request
def before_request_func():
    print("Before request")

@app.after_request
def after_request_func(response):
    print("After request")
    return response

蓝图

蓝图允许你将应用程序分割成多个模块,使其更易于管理和维护。

代码语言:javascript
复制
from flask import Blueprint

bp = Blueprint('main', __name__)

@bp.route('/')
def index():
    return 'Hello from the main blueprint!'

app.register_blueprint(bp)

RESTful API

Flask 非常适合构建 RESTful API。使用 Flask-RESTful 库可以简化这一过程。

代码语言:javascript
复制
pip install flask-restful

创建一个简单的 RESTful API:

代码语言:javascript
复制
from flask_restful importResource,Api

api =Api(app)

classHelloWorld(Resource):
defget(self):
return{'hello':'world'}

api.add_resource(HelloWorld,'/api')

访问 http://127.0.0.1:5000/api,你将看到 {"hello": "world"}

部署

开发完应用后,部署是最后一步。你可以将 Flask 应用部署到各种平台上,如 Heroku、AWS、GCP 等。

部署到 Heroku

1. 安装 Heroku CLI 并登录:

代码语言:javascript
复制
heroku login

2. 创建一个 Heroku 应用:

代码语言:javascript
复制
heroku create

3. 推送代码到 Heroku:

代码语言:javascript
复制
git push heroku master

4. 访问你的应用:

代码语言:javascript
复制
heroku open

结论

Flask 是一个强大且灵活的框架,适合从简单到复杂的各种 Web 应用开发。通过本文的介绍,你应该对 Flask 的基础和高级特性有了全面的了解。实践是最好的老师,动手尝试吧!希望你在使用 Flask 的过程中能找到乐趣,并创造出精彩的 Web 应用。

Happy Coding! 🎉

万水千山总是情,点个 👍 行不行。

如果你觉得文章还不错,请大家点赞、分享、留言,因为这将是我持续输出更多优质文章的动力

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-07-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 简说Python 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简单聊聊
  • 入门:Hello Flask!
  • 路由和视图函数
    • 动态 URL
      • URL 变量类型
      • 模板渲染
        • 基础模板
        • 表单处理
          • 创建表单
            • 处理表单数据
            • 数据库集成
              • 安装 Flask-SQLAlchemy
                • 配置数据库
                  • 创建模型
                    • 初始化数据库
                      • 数据库操作
                      • 用户认证
                        • 安装 Flask-Login
                          • 配置 Flask-Login
                            • 登录视图
                              • 受保护的视图
                                • 登出视图
                                • 高级功能
                                  • 中间件
                                    • 蓝图
                                      • RESTful API
                                      • 部署
                                        • 部署到 Heroku
                                        • 结论
                                        相关产品与服务
                                        数据库
                                        云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
                                        领券
                                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档