当前位置: 首页 > news >正文

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应用程序。

http://www.lryc.cn/news/320268.html

相关文章:

  • docker 安装minio,详细图解
  • 【SpringBoot】请求与响应参数 IoC与DI 总结
  • 100道面试必会算法-05-字符串转换整数 (atoi)
  • Ypay源支付2.8.8免授权聚合免签系统
  • 从零到一构建短链接系统(三)
  • C语言易错知识点:scanf函数
  • 如何实现图片上传至服务器
  • OSPF协议全面学习笔记
  • acwing算法提高之搜索--剪枝
  • 鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:Web)上篇
  • TPU浅谈
  • 华为OD机试 - 求字符串中所有整数的最小和(Java JS Python C C++)
  • goland设置保存文件时不将4个空格转为TAB
  • 基于Linux内核的socket编程(TCP)的C语言示例
  • 【WEEK3】 【DAY4】JSON交互处理第三部分【中文版】
  • 下载chromedrive,使用自动化
  • D-Star 寻路算法
  • mysql5.7编译安装
  • Java项目实战记录:雷达数据渲染
  • 进程的概念 | PCB | Linux下的task_struct | 父子进程和子进程
  • 【GPT-SOVITS-03】SOVITS 模块-生成模型解析
  • 2024HVV行动-进军蓝中研判(log4j2、fastjson、Struts2、Shiro)
  • 亮点抢先看!4月16-17日,百度Create大会开设“AI公开课”,大咖带你打造赚钱工具
  • 【笔记本清灰/实用经验】荣耀Magicbook14-2020款-R5-4500U-清灰实战
  • 如何写好Stable Diffusion的prompt
  • 计算机毕业设计 | SpringBoot+vue 移动端社区物业管理系统(附源码+论文)
  • 玩转C语言——数组初探
  • Nginx指令配置大全
  • 富格林:安全出金关注可信操作
  • DELETE、TRUNCATE 和 DROP 在MySQL中的区别及使用示例