《Flask Web 开发实战》 笔记 - 基础篇
Flask 仅保留了Web框架的核心,其他功能都交给了扩展实现。
基础篇
1.1 基础准备
1.1.1 搭建开发环境
1.安装pip和pipenv
Pipenv
是包管理工具
pip install pipenv
直接用容易报错,可以使用国内镜像。
2.创建虚拟环境
使用虚拟环境能够拥有一个独立的python解释器环境
pipenv install
能够创建一个隔离环境
C:\Users\Usrname\AppData\Local\pypa\virtualenv 是该项目的虚拟环境文件夹
pipenv shell
或 pipenv run
命令能够自动从目录中加载环境变量,即激活虚拟环境
exit退出
也能够使用pipenv run .py
不通过激活虚拟环境而直接执行命令
3.依赖管理
在使用pipenv install 后,在项目文件夹根目录下会创建Pipfile和Pipfile.py文件用来记录使用过的依赖包信息
可以使用pipenv graph
命令查看当前环境下的依赖,或是在虚拟环境中使用pip list
查看依赖列表
1.1.2 安装Flask
直接使用pipenv install flask
进行下载,如果本地有需要更新,可以使用pipenv update flask
1.1.3 使用IDE进行开发
1.安装pycharm
2.创建项目
3.在project中添加虚拟环境
1.2 Hello Flask!
1.2.1 基础程序
第一个示例程序 起名时不要起flask.py
from flask import Flask
app = Flask(__name__)
# name 会根据当前所处的模块来赋予对应的值,如果名字为app.py则这个值为app。
# 事实上这里就是给app附了一个Flask(app)
@app.route('/')
def index():
return 'hello world'
1.2.2 路由
flask的交互流程:
- 用户输入url访问资源
- flask接收请求并分析url
- 为这个url找到处理函数
- 执行函数并生成响应返回给浏览器
- 解析响应并将信息显示
如何处理请求并为其定义规则:添加app.route()
装饰器,并将传入的URL规则作为参数就可以让URL和函数建立关联,也就是路由注册的过程
路由负责管理URL和函数之间的映射,这个函数就是视图函数。
在1.2.1 的示例中,app.route()
将地址/和index()
函数进行绑定,当访问这个URL时就会触发index()
函数
- 同时绑定多个URL
能够使得多个URL地址指向同一个视图函数
@app.route('/index')
@app.route('/')
def index():
return 'hello world'
- 动态URL
能够根据变量名来绑定URL
@app.route('/index/<name>')
可以根据该变量来传参给视图函数
def greet(name='123'): # 设置默认值,当用户没有输入name时会返回这个默认值 return 'hello,%s' % name
1.3 启动开发服务器
Flask内置了一个简单的开发服务器,由Werkzeug提供。
1.3.1 run!
在虚拟环境下使用flask run
就能够启动项目,初始默认监听localhost:5000
1.如果报错找不到:
- Flask 会去自动查找当前目录下名为
app.py
或wsgi.py
的文件 - 从环境变量FLASK_APP对应的值寻找名为app的程序,如果你的名字不为app.py等,则需要设置环境变量:
set FLASK_APP=hello
2.如何管理环境变量:
参考 https://blog.csdn.net/weixin_42289273/article/details/116231363
安装python-dotenv
pipenv install python-dotenv
然后在项目根目录下创建两个文件:.env和.flaskenv
.flaskenv 用来存储和flask相关的公开环境变量
.env用来存储包含敏感信息的环境变量 git时要用.gitignore来忽略
优先级: 手动>env>flaskenv
FLASK_APP=hello
FOO = "ABC"
3.在pycharm中运行:
这里按照书里的操作方式报错。 个人是将配置放在同级目录下进行 flask run
这里有两个参数 --host
和 --port
分别用来指定启动的ip和端口,也可以通过指定环境变量FLASK_RUN_HOST
和FLASK_RUN_PORT
来设置。
1.3.2 设置运行环境
在上图中有一个参数FLASK_ENV,默认为production 为生产环境。我们在开发时要将其设置为开发模式,development来开启所有支持开发的特性。
在开发环境中会开启调试模式来给开发带来帮助。
- 调试器: 能够在错误页面上执行Python代码。
- 重载器: 在修改了代码之后,重载器的作用就是监测文件的变动然后重启开发服务器。这里的问题是比较耗电而且准确率一般,可以通过
pipenv install watchdog --dev
安装另一个监测库来进行检测,其中--dev
是在开发模式时使用。
(中间部分章节比较基础,跳过)
1.6 项目配置
配置变量:通过app.config
属性作为统一的接口来设置和获取。事实上是一个字典类。
app.config['ADMIN_NAME']='Peter' # 同前文所看的源码那样,只允许大写形式。
app.config.update(
#用于一次指定多个配置)
1.7 URL和端点
主要介绍url_for
的使用,如果所有的URL都是以硬编码的形式存在,那么修改一个URL之后,其余的URL都要进行修改,url_for
能够获取视图函数对应的URL地址。也可以通过设置endpoint参数来指定。
@app.route('hello/<name>')
def greet(name):
return
# 此时,url_for 需要指定name参数。
1.8 Flask命令
自定义命令,可以通过创建一个函数然后添加app.cli.command()
装饰器来实现:
@app.cli.command()
def hello():
click.echo('hello,human')
使用flask hello
可以调用该函数
1.9 模板与静态文件
templates
用于存放模板文件
static
用于存放静态资源
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?