Flask介绍
Flask 是一个轻量级的 web 开发框架, 使用 Python 开发, 上手简单。
安装 Flask
pip install Flask
第一个 Flask 程序
1、编写 app.py 文件内容如下:
2、启动程序
python app.py
3、浏览器访问http://localhost:9001/查看显示内容
4、程序说明
Line 4: 导入 Flask 类
Line 7: 创建 Flask 实例, 第一个参数为模块或者包的名称, 模块名称会根据是否单独应用而变化因此可以选择使用 name 变量动态指定, 该参数与 Flask 查找static 和 template 文件位置有关
Line 10: 定义路由 endpoint=/, 表示有 index 函数处理请求 url 为/的 GET 请求
Line 18: 启动 app, 执行监听的 host:port, 在测试环境开启调试模
注意: debug 模式是不安全的, 在生产环境应该关闭
路由
1、路由用于将 python 函数绑定到 url 上, 一个函数可以绑定多个路由规则, 也可以构建动态的 url
2、访问浏览器http://localhost:9001/users/
3、访问浏览器http://localhost:9001/users/12/
4、在动态 url 中通过添加变量将参数传递到函数中, 在添加变量可以使用 指定 varname 的类型
converter 支持 int, float, path 三种类型
5、路由中的 endpoint 有两种模式, 以/结尾和不以/结尾
对于以/结尾的 route, 在浏览器中访问 url 时若不以/结尾, 会被 flask 重定向到与以/结尾的 endpoint 上
对于不以/结尾的 route, 在浏览器中访问 url 时若以/结尾, 则会返回 404 错误
个人建议: 在定义 route 和使用 url 访问时结尾都加上/
6、路由中可以通过 methods 指定函数处理的 HTTP 方法, 默认只处理 GET 方法
HTTP 方法:
GET: 获取内容
POST: 提交新数据
HEAD: 检查数据是否存在
PUT: 覆盖数据
DELETE: 删除数据
OPTIONS: 检查服务器支持哪些方法
模板
1、项目目录结构:
2、模板存放目录为/templates/
3、渲染模板
说明:
Line 2: 导入 render_template 函数
Line 8: 使用 render_template 函数渲染模板 users.html, 并将变量 title 和users 传递给模板
4、模板定义
说明:
Line 5: 将 title 变量渲染到模板中, 需要使用两个大括号包含变量
Line 17: 遍历 users, for 语句需要被包含在大括号百分号之中,结束需要用 endfor
Line 21: 条件判断, if 语句需要被包含在大括号百分号之中,结束需要用 endfif
5、访问浏览器 http://localhost:9001/users/
静态文件
可以在模板中引入本地的 js, css, 图片等资源文件
说明:
静态资源文件需要放置在 static 目录
在模板中使用 /static/filename.suffix 的格式引入文件
可以使用url_for('static', filename=filename.suffix)函数自动生成 url 引入文件
请求参数
说明:
Line 1: 导入 reqeust 对象
Line 5: 通过 reqeust.method 获取请求方法
Line 6: 通过 reqeust.args 获取 GET 请求提交的参数
访问浏览器http://localhost:9001/users/?id=123
Line 8: 通过 reqeust.form 获取 POST 请求提交的参数
通过 curl 访问http://localhost:9001/users/
若需要上传文件则需要使用 request.files 获取提交的参数并通过 save 函数保存到服务器上
需要注意在保存用户上传的文件时注意对文件名进行安全处理, 或者使用自己的命名规则,切忌不要直接使用文件名存储到服务器中
cookie
说明:
Line 1: 导入 make_response 函数
Line 4: 通过 make_response 创建 response 对象
Line 5: 设置 cookie 信息 locale=zh_CN
Line 6: 获取 cookie 中信息
会话
说明:
Line 1: 导入 session 对象
Line 9: 在 session 中存储信息
Line 2: 导入重定向函数 redirect
Line 10: 重定向到 /users/
Line 16: 获取 session 中存储的信息
Line 20: 删除 session 中的信息
Line 21: 销毁 session 中的所有信息
Line 4: 设置 session 签名所使用的密钥, 可以使用 os.urandom(32) 来生成强壮的密钥
......
领取专属 10元无门槛券
私享最新 技术干货