Python Flask框架(一)初识Flask

Flask是使用Python编写的Web微框架。Web框架可以使我们不用关心底层的请求响应处理,更方便高效的编写Web程序。Flask有两个主要依赖,一个是WSGI(Web Server Gateway Interface,web服务器网关接口)工具集,另一个是Jinja2模版引擎。

创建开发环境

1. 安装pipenv

pipenv是基于pip的python包管理工具,可以看作是pip的加强版。具体来说,它是pip、Pipfile和Virtualenv的结合体,它让包安装、包依赖管理和虚拟环境管理更加方便。

在Python中,虚拟环境就是隔离的Python解释器环境。通过创建虚拟环境,你可以拥有一个独立的Python解释器环境。这样做的好处是可以为每一个项目创建独立的Python解释器环境,因为不同的项目常常会依赖不同的版本的库或Python版本。使用虚拟环境可以保持全局Python解释器环境的干净,避免包和版本的混乱,并且可以方便的区分和记录每个项目的依赖,以便在新环境下复现依赖环境。

2. 创建虚拟环境

首先确保当前工作目录在所开发项目的根目录,然后使用pipenv install命令为当前项目创建虚拟环境。

默认情况下,Pipenv会统一管理所有虚拟环境。在Windows系统中,虚拟环境文件夹会在C:\Users\Administrator.virtualenvs\目录下创建,而Linux或MacOS会在~/.local/share/virtualenvs/目录下创建。如果想在项目内创建虚拟环境文件夹,可以设置环境变量PIPENV_VENV_IN_PROJECT,这时名为.venv的虚拟环境文件夹将在项目根目录被创建。

在创建虚拟环境时,如果项目根目录下没有Pipfile文件,pipenv install命令还会在项目文件夹根目录下创建Pipfile和Pipfile.lock文件,前者用来记录项目依赖包列表,而后者记录了固定版本的详细依赖包列表。当我们使用Pipenv安装\删除\更新依赖包时,Pipfile以及Pipfile.lock会自动更新。

3. 安装Flask

类似 pip 的 -i (--index-url)选项,可以使用 --pypi-mirror 临时设置镜像源地址
pipenv install --pypi-mirror https://pypi.doubanio.com/simple flask

4. 切换生产环境和开发环境

开发环境是指我们在本地编写或测试程序时的计算机环境,而生产环境与开发环境相对,它指的是网站部署上线供用户访问时的服务器环境。根据运行环境的不同,Flask程序、扩展以及其他程序会改变相应的行为和设置。为了区分程序运行环境,Flask提供了一个FLASK_ENV环境变量来设置环境,默认为production。

shell 复制代码
$ export FLASK_ENV=development
$ export FLASK_ENV=production

最小Flask程序

python 复制代码
"""
app.py
"""

from flask import Flask
app = Flask(__name__)

@app.route('/')
def index():
	return '<h1>Hello Flask!</h1>'

Flask构造函数,参数时模块或包的名称(app.py),该函数的返回是类的实例app。

编写Flask程序,我们要做的只是建立处理请求的函数,并为其定义对应的URL规则。只需为函数附加app.route()装饰器,并传入URL规则作为参数(这里的URL是相对URL,既不包括域名的URL),我们就可以让URL与函数建立关联。这个过程我们称为注册路由,路由负责管理URL和函数之间的映射,而这个函数则被称为试图函数。

在这个程序里,app.route装饰器把根地址/和index()函数绑定起来,当用户访问这个URL时就会触发index()函数。

启动开发服务器

pipenv run flask run

flask run命令运行的开发服务器默认会监听http://127.0.0.1:5000/地址(按Ctrl+C退出),并开启多线程支持。当我们打开服务器访问这个地址时,会看到网页上显示"Hello Flask!"。

一个完整的网站当然不能只返回一句"hello world",我们需要模版(template)和静态文件(static file)来生成更加丰富的网页。模版就是包含程序页面的HTML文件,静态文件则是需要在HTML文件中加载的CSS和JavaScript文件,以及图片字体文件等资源文件。默认情况下,模版文件存放在项目根目录中的templates文件夹中,静态文件存放在static文件夹下,这两个文件夹需要和包含程序实例的模块处于同一目录下,对应的项目结构示例如下:

bash 复制代码
hello/
	- templates/
	- statics/
	- app.py
相关推荐
天天爱吃肉82181 小时前
【重磅发布:拿下新超仁达代理权 】
大数据·人工智能·python·功能测试·汽车
神王宝宝 王者小学1 小时前
面向领域驱动架构的查询实现方式
前端·python·架构
ningmengjing_3 小时前
Redis 从入门到实战:Python操作全攻略
数据库·redis·python
️学习的小王3 小时前
智能文档助手:基于RAG的本地化文档问答系统实战指南
人工智能·python·机器学习
不瘦80斤不改名3 小时前
05-vibe-coding-向agentic-engineering演进
人工智能·笔记·python·prompt
笨鸟先飞,勤能补拙3 小时前
AI 安全的下一个 5 年:从 Agent 到 AGI 的攻防博弈
人工智能·python·安全·web安全·网络安全·github·agi
Logintern094 小时前
LangSmith如何根据id关系,在服务端把扁平列表重建为树形结构,用于页面渲染Trace视图
python
月光船幽幽4 小时前
呼吸孔设计重塑系统稳定性
python·科技·算法
Bryce学亮4 小时前
FileLine,基于 Qt 6 + QML 构建的跨平台文件传输与即时通讯工具
数据库·c++·人工智能·python·qt·github