1.引言
Flask是python生态领域中最受欢迎的轻量级web框架,它的设计理念:微核心+可扩展。是我们在web应用开发中,可以考虑的框架选择之一。我自己在日常应用中,相对用的比较多一些,主要是使用起来方便。比如最近做的一些Langchian+LLM智能体应用中,选择Flask框架实现web端的发布交互。
这是一个基于Langchain框架+LLM的应用小工具,用户输入鲜花类型名称,通过搜索引擎找到相应的微博大V,借助爬虫抓取大V微博主页详细内容,最后交给LLM进行文本摘要,和生成联络文稿,旨在帮助营销小伙伴提升运营效率的一个工具。
你看到的这个页面,背后实现的框架即是Flask框架。今天这篇文章,我将分享Flask框架给你,它非常适合于我们做一些轻量级的web应用,特点突出一个小巧,快,方便。当然python领域web框架有很多,比如Django,Tornado,FastApi等。
2.示例
2.1.环境准备
遵循惯例,只要是非python官方提供的库,我们都需要安装
pip install Flask
2.2.hello world
环境准备好,来一个hello flask!应用体验一下吧
# 导入 flask 模块
from flask import Flask
# 创建一个 Flask 实例,声明应用app
app = Flask(__name__)
# 定义一个路由,访问根路径时返回欢迎信息
@app.route('/')
def home():
return '<h1>Hello Flask!</h1>'
# 启动应用
if __name__ == '__main__':
app.run(debug=True)
启动应用,访问:http://127.0.0.1:5000/
2.3.路由
通过入门案例,我们看到通过Flask框架开发web应用如此简单!其中它很重要的一个组件是路由,即@app.route定义的内容。路由在web应用中作为基础能力之一,每一个路由代表一个资源,或者说是一个API。
Flask框架的路由系统支持动态路由,和参数类型约束: 支持string
/int
/float
/path
/uuid
等类型转换器
@app.route('/user/<int:user_id>')
def user_profile(user_id):
return f'User ID: {user_id}'
@app.route('/search/<path:query>')
def search(query):
return f'Searching: {query}'
2.4.请求上下文
可以通过request对象处理http各种请求,及请求参数
from flask import request
@app.route('/login', methods=['POST'])
def login():
username = request.form.get('username')
ip_address = request.remote_addr
return f'Welcome {username} from {ip_address}'
2.5.模板引擎
在引言部分的小工具应用中,你看到的页面即是通过模板引擎进行的渲染。Flask框架集成了Jinja2实现动态渲染。
创建templates目录,存放html模板文件
dashboard.html
<!DOCTYPE html>
<html>
<body>
<h1>{{ username }}'s Dashboard</h1>
{% if notifications > 0 %}
<div class="alert">新通知数量: {{ notifications }}</div>
{% endif %}
</body>
</html>
增加模板渲染路由
访问:http://127.0.0.1:5000/dashboard
2.6.常用扩展插件
实践应用中,我们可以根据应用需求选择Flask不同的插件集成。它提供了一下常用常见
最后我的文章起到抛砖引玉作用,更详细内容,我还是推荐你去看一看官方文档:dormousehole.readthedocs.io/en/latest/