Python实战:Flask轻量级web框架入门

Flask是一个轻量级的Web框架,它是由Armin Ronacher开发的,使用Python语言编写。Flask易于上手,具有高度的可扩展性,非常适合快速开发Web应用程序。

一.Flask简介

Flask是一个基于Werkzeug WSGI工具箱和Jinja2模板引擎的Web框架。与Django等其他Web框架相比,Flask更加轻量级,它没有内置的ORM、表单验证等功能,而是通过扩展来实现这些功能。这使得Flask更加灵活,可以根据项目的需求选择合适的扩展。

二.Flask安装

在开始使用Flask之前,需要确保已经安装了Python。Flask可以通过pip命令进行安装:

pip install Flask

三. Flask基础

1.Hello, World!

创建一个Flask应用程序非常简单。首先,创建一个名为app.py的文件,并输入以下代码:

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

这段代码创建了一个简单的Flask应用程序,当访问根URL(/)时,它会返回"Hello, World!"。

2.路由和视图函数

在Flask中,路由用于将URL映射到视图函数。在上面的示例中,@app.route('/')定义了一个路由,当用户访问根URL时,会调用hello_world视图函数。
Flask还支持动态路由,可以通过在路由中使用变量来捕获URL的一部分。例如,可以将用户ID作为URL的一部分:

@app.route('/user/<int:user_id>')
def show_user(user_id):
    return f'User ID: {user_id}'

在这个示例中,<int:user_id>定义了一个整数类型的变量,它将匹配URL中的整数部分,并将其作为参数传递给show_user视图函数。

3.模板引擎

Flask使用Jinja2作为模板引擎,可以动态生成HTML内容。首先,在项目目录中创建一个名为templates的文件夹,并在其中创建一个名为index.html的HTML文件:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Flask Template</title>
</head>
<body>
    <h1>Hello, {{ name }}!</h1>
</body>
</html>

接下来,在app.py中修改hello_world视图函数,使用render_template函数渲染模板:

from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def hello_world():
    return render_template('index.html', name='World')
if __name__ == '__main__':
    app.run()

在这个示例中,render_template函数接受模板文件名和要传递给模板的参数。在模板文件中,使用{{ name }}语法来插入变量。

四.Flask扩展

Flask的强大之处在于其丰富的扩展。以下是一些常用的Flask扩展:

1.Flask-Script

Flask-Script为Flask应用程序提供了命令行接口。安装Flask-Script:

pip install Flask-Script

app.py中,使用Manager类创建一个命令行接口:

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

现在,可以通过命令行运行应用程序:

python app.py runserver

2.Flask-Migrate

Flask-Migrate是一个用于数据库迁移的Flask扩展,它基于Alembic。安装Flask-Migrate:

pip install Flask-Migrate

app.py中,首先需要初始化数据库迁移:

from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///app.db'
db = SQLAlchemy(app)
migrate = Migrate(app, db)
class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(64), unique=True)
if __name__ == '__main__':
    manager.run()

现在,可以使用命令行创建数据库表:

python app.py db init
python app.py db migrate -m "Initial migration."
python app.py db upgrade

3.Flask-RESTful

Flask-RESTful是一个用于构建RESTful API的Flask扩展。安装Flask-RESTful:

pip install Flask-RESTful

app.py中,使用Api类创建一个RESTful API:

from flask_restful import Api, Resource
app = Flask(__name__)
api = Api(app)
class UserResource(Resource):
    def get(self, user_id):
        user = User.query.get_or_404(user_id)
        return {'username': user.username}
api.add_resource(UserResource, '/user/<int:user_id>')
if __name__ == '__main__':
    app.run()

在这个示例中,我们创建了一个UserResource类,它继承自Resource类。get方法用于处理GET请求,并返回用户名。add_resource方法将UserResource类注册为API资源。

五.结论

Flask是一个轻量级、灵活的Web框架,非常适合快速开发Web应用程序。通过本文的介绍,我们了解了Flask的基础知识,包括路由、视图函数、模板引擎和扩展。通过实际的项目经验,我们可以更好地掌握Flask,并利用其丰富的扩展来构建功能强大的Web应用程序。

  • 17
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第1篇 基础篇 第1章 开发环境搭建 2 1.1 JDK开发工具包 3 1.2 Tomcat服务器 8 1.3 Linux系统配置JDK与Tomcat服务器 16 第2章 Java语言基础 20 2.1 基本语法 21 2.2 运算符 25 2.3 条件语句 29 2.4 循环控制 34 2.5 常用排序 42 2.6 算法应用 48 第3章 HTML/CSS技术 53 3.1 页面效果 54 3.2 表格样式 64 3.3 鼠标样式 72 3.4 文字及列表样式 75 3.5 文字特效 79 3.6 图片滤镜特效 90 第4章 JSP基础与内置对象 96 4.1 JSP的基本应用 97 4.2 JSP内置对象 105 4.3 JSP的自定义标签 130 第5章 JavaBean技术 145 5.1 字符串处理 146 5.2 数据验证 167 5.3 日期时间处理 176 5.4 输出实用的HTML代码 182 5.5 窗口与对话框 186 5.6 对数据库操作的JavaBean 189 第6章 Servlet技术 211 6.1 Servlet基础 212 6.2 Servlet应用 223 第7章 过滤器与监听器技术 239 7.1 Servlet过滤器 240 7.2 监听器的应用 262 第8章 JSTL标签库 267 8.1 JSTL Core标签库 268 8.2 JSTL I18N标签库 275 第9章 JavaScript技术 283 9.1 数据验证 284 9.2 字符串处理 304 9.3 日期时间处理 313 9.4 使用JavaScript控制DOM 321 第10章 Ajax技术 326 10.1 定时业务 327 10.2 改善用户体验 332 10.3 动态加载数据 356 第2篇 文件管理篇 第11章 文件基本操作及文件上传下载 372 11.1 文件的基本操作 373 11.2 无组件的文件上传 412 11.3 通过组件实现文件上传 418 11.4 文件下载 428 第12章 文件的批量管理 436 12.1 文件的批量操作 437 12.2 文件的压缩与解压缩 458 12.3 文件的批量上传 487 第3篇 图像与多媒体篇 第13章 图像生成 492 13.1 绘制图形和文本 493 13.2 绘制图案 506 13.3 图形的合并运算 512 13.4 文字特效 516 13.5 图片特效 523 13.6 简单的验证码应用 533 13.7 复杂的验证码应用 540 13.8 生成条形码 556 第14章 图像操作 559 14.1 图片的大小 560 14.2 图片与鼠标相关的操作 561 14.3 图片与时间相关的操作 580 14.4 图片的动画效果 589 14.5 选择头像图片 596 14.6 图片的其他效果 599 第15章 多媒体应用 603 15.1 播放音乐 604 15.2 插入Flash动画 616 15.3 播放视频 618 第4篇 窗体应用篇 第16章 窗口的应用 624 16.1 弹出窗口控制 625 16.2 弹出网页对话框 634 16.3 窗口的动画效果 643 16.4 窗口控制 652 16.5 框架的应用 659 16.6 无边框窗口 666 第17章 导航条的应用 671 17.1 水平导航条的应用 672 17.2 下拉菜单式导航条 680 17.3 侧导航条设计 692 第18章 表单的应用 698 18.1 文本框/编辑框/隐藏域组件 699 18.2 下拉列表与菜单的应用 706 18.3 单选按钮 713 18.4 复选框 716 18.5 密码域 717 18.6 表单的应用 718 第19章 表格的操作 724 19.1 应用JavaScript操作表格 725 19.2 对单元格进行控制 737 19.3 表格的特殊效果 748 第5篇 操作Word、Excel、报表与打印篇 第20章 JSP操作Word 764 20.1 应用JavaScript导出到Word 765 20.2 应用响应流导出到Word 766 20.3 应用POI组件导出到Word 772 第21章 JSP操作Excel 775 21.1 应用JXL组件操作Excel 776 21.2 应用POI组件操作Excel 807 第22章 报表与打印 829 22.1 Web打印 830 22.2 利用Word打印报表 833 22.3 利用Excel打印报表 838 22.4 应用WebBrowser+CSS套打邮寄 22.5 打印库存报表 844 22.6 高级报表 850 第6篇 综合应用篇 第23章 综合应用 862 23.1 在线投票系统 863 23.2 用户注册 865 23.3 论坛 873 23.4 购物车 879 23.5 聊天室 885 23.6 万年历 901
第1篇 基础篇 第1章 开发环境搭建 2 1.1 JDK开发工具包 3 1.2 Tomcat服务器 8 1.3 Linux系统配置JDK与Tomcat服务器 16 第2章 Java语言基础 20 2.1 基本语法 21 2.2 运算符 25 2.3 条件语句 29 2.4 循环控制 34 2.5 常用排序 42 2.6 算法应用 48 第3章 HTML/CSS技术 53 3.1 页面效果 54 3.2 表格样式 64 3.3 鼠标样式 72 3.4 文字及列表样式 75 3.5 文字特效 79 3.6 图片滤镜特效 90 第4章 JSP基础与内置对象 96 4.1 JSP的基本应用 97 4.2 JSP内置对象 105 4.3 JSP的自定义标签 130 第5章 JavaBean技术 145 5.1 字符串处理 146 5.2 数据验证 167 5.3 日期时间处理 176 5.4 输出实用的HTML代码 182 5.5 窗口与对话框 186 5.6 对数据库操作的JavaBean 189 第6章 Servlet技术 211 6.1 Servlet基础 212 6.2 Servlet应用 223 第7章 过滤器与监听器技术 239 7.1 Servlet过滤器 240 7.2 监听器的应用 262 第8章 JSTL标签库 267 8.1 JSTL Core标签库 268 8.2 JSTL I18N标签库 275 第9章 JavaScript技术 283 9.1 数据验证 284 9.2 字符串处理 304 9.3 日期时间处理 313 9.4 使用JavaScript控制DOM 321 第10章 Ajax技术 326 10.1 定时业务 327 10.2 改善用户体验 332 10.3 动态加载数据 356 第2篇 文件管理篇 第11章 文件基本操作及文件上传下载 372 11.1 文件的基本操作 373 11.2 无组件的文件上传 412 11.3 通过组件实现文件上传 418 11.4 文件下载 428 第12章 文件的批量管理 436 12.1 文件的批量操作 437 12.2 文件的压缩与解压缩 458 12.3 文件的批量上传 487 第3篇 图像与多媒体篇 第13章 图像生成 492 13.1 绘制图形和文本 493 13.2 绘制图案 506 13.3 图形的合并运算 512 13.4 文字特效 516 13.5 图片特效 523 13.6 简单的验证码应用 533 13.7 复杂的验证码应用 540 13.8 生成条形码 556 第14章 图像操作 559 14.1 图片的大小 560 14.2 图片与鼠标相关的操作 561 14.3 图片与时间相关的操作 580 14.4 图片的动画效果 589 14.5 选择头像图片 596 14.6 图片的其他效果 599 第15章 多媒体应用 603 15.1 播放音乐 604 15.2 插入Flash动画 616 15.3 播放视频 618 第4篇 窗体应用篇 第16章 窗口的应用 624 16.1 弹出窗口控制 625 16.2 弹出网页对话框 634 16.3 窗口的动画效果 643 16.4 窗口控制 652 16.5 框架的应用 659 16.6 无边框窗口 666 第17章 导航条的应用 671 17.1 水平导航条的应用 672 17.2 下拉菜单式导航条 680 17.3 侧导航条设计 692 第18章 表单的应用 698 18.1 文本框/编辑框/隐藏域组件 699 18.2 下拉列表与菜单的应用 706 18.3 单选按钮 713 18.4 复选框 716 18.5 密码域 717 18.6 表单的应用 718 第19章 表格的操作 724 19.1 应用JavaScript操作表格 725 19.2 对单元格进行控制 737 19.3 表格的特殊效果 748 第5篇 操作Word、Excel、报表与打印篇 第20章 JSP操作Word 764 20.1 应用JavaScript导出到Word 765 20.2 应用响应流导出到Word 766 20.3 应用POI组件导出到Word 772 第21章 JSP操作Excel 775 21.1 应用JXL组件操作Excel 776 21.2 应用POI组件操作Excel 807 第22章 报表与打印 829 22.1 Web打印 830 22.2 利用Word打印报表 833 22.3 利用Excel打印报表 838 22.4 应用WebBrowser+CSS套打邮寄 22.5 打印库存报表 844 22.6 高级报表 850 第6篇 综合应用篇 第23章 综合应用 862 23.1 在线投票系统 863 23.2 用户注册 865 23.3 论坛 873 23.4 购物车 879 23.5 聊天室 885 23.6 万年历 901

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值