黑马程序员技术交流社区
标题: 01-Flask基础笔记 [打印本页]
作者: saitian09 时间: 2018-7-13 19:46
标题: 01-Flask基础笔记
01-flask简介:【PS】内含附件,请使用Typora打开。
简介诞生于2010年,是Armin ronacher用Python语言基于Werzeug工具箱编写的轻量级web开发框架。
Flask相当于一个内核,是一个比较小的框架,其他几乎所有功能都要用到扩展,只有基本功能。Flask没有默认使用的数据库,可以选择使用MySQL,也可以选择使用其他的,比如NoSQL。
Flask常用扩展包:Flask-SQLalchemy:操作数据库;
Flask-script:插入脚本;
Flask-migrate:管理迁移数据库;
Flask-Session:Session存储方式指定;
Flask-WTF:表单;
Flask-Mail:邮件;
Flask-Bable:提供国际化和本地化支持,翻译;
Flask-Login:认证用户状态;
Flask-OpenID:认证;
Flask-RESTful:开发REST API的工具;
Flask-Bootstrap:集成前端Twitter Bootstrap框架;
Flask-Moment:本地化日期和时间;
Flask-Admin:简单而可扩展的管理接口的框架
02-http通讯流程file:///E:/001-flask/flask_basic_v1.1/assets/http_request.png?lastModify=1531482117
1.1 8种常见请求 get 放到请求地址
post 可以放到请求体也可以放到请求地址。
03-虚拟环境安装1.为什么要使用虚拟环境?1. 什么是虚拟环境?实际上就是一个特殊的文件夹,可以安装我所需要运行的程序环境。
2. 为什么要安装虚拟环境?在开发过程中,需要使用python的某些工具包he框架的时候需要联网安装,是用虚拟环境可以在不同的虚拟机上测试不同的版本。
如果在一台电脑上, 想开发多个不同的项目, 需要用到同一个包的不同版本, 如果使用上面的命令, 在同一个目录下安装或者更新, 新版本会覆盖以前的版本, 其它的项目就无法运行了.
有了虚拟环境之后,可以非常方便的调试各种版本的flask,python解释器。
04-如何安装虚拟环境?1. 查看是否有虚拟环境:相关操作命令 virtualenv --version
2. 如果不能提示命令,执行一下命令。sudo pip install virtualevnwrapper
讲义上有。
3. 查看电脑中有哪些虚拟环境命令行内:输入
workon 可以查看
workon py3_flask 可以进入py3_flask虚拟环境4. 创建开发所需要的虚拟环境?命令行内:输入
mkvirtualenv 虚拟环境名称;
默认是python2.x版本;
我们要安装python3.x
5. 如何退出虚拟环境?命令行内:输入
(py3_flask) python@ubuntu:~/Desktop$ deactive 可以退出虚拟环境6. 如何删除虚拟环境命令行内:输入
(py3_flask) python@ubuntu:~/Desktop$ rmvirtualenv
rmvirtualenv 虚拟环境名称
例 :删除虚拟环境py3_flask
先退出:deactivate
再删除:rmvirtualenv py3_flask
可以删除虚拟环境,删除后可以再用workon查看7. 安装flaskpip install flask==0.10.1
这里就可以完成安装了
8. 查看当前虚拟环境中有哪些扩展包?进入虚拟环境后命令行内:输入
pip freezefile://C:/Users/huileke/Desktop/flask-day01-%E7%AC%94%E8%AE%B0%E4%BD%9C%E4%B8%9A/Snipaste_2018-06-28_23-05-42.png?lastModify=1531482117
9. 如何将当前虚拟环境中的扩展包导出?命令行内:输入
pip freeze > requirements.txt 10. 如何通过文件导入多个扩展包?可以先导出到requirements.txt
然后命令行内:输入
pip install -r requirements.txt
05-flask介绍
1. 什么是第三方?flask是一个第三方框架
第一方:python语言开发者,范罗.苏姆
第二方:我们自己:开发者
第三方:提供框架的人 Arminrocher,world online ,apache.等
apace:美国软件基金会组织。tomcat,spark,hadoop等350多个开源项目。
2. flask框架介绍?诞生自2010年,作者是Arminrocher
日工了基本的核心功能,werzeug + jinjia2,并没有额外的功能。
werkzeug:负责路由url的匹配
jinjia2:提供模板的渲染,页面视图的渲染
额外功能:需要单独安装,比如:Flask_Mail 等,flask常用扩展包。
06-pycharm中使用虚拟环境
\1. 如何使用虚拟环境中的flask? 1-打开pychorm
2-选择虚拟环境中的python解释器
3-查看路径,关联虚拟环境路径到pycharm中,
命令行:输入
which pycharm
搜索到路径后,可以复制到pycharm里面,与虚拟环境进行关联,
07-flask基本helloworld 演示
1. 最简单的7行代码 编写最简单的flask程序
注意两种运行方式,不能运行该怎么解决?
运行方式1:Terminal命令行运行
cd进入当前文件夹下,workon py3_flask
python 文件名
运行方式2:
直接运行当前py文件。2.占用端口号问题
如果存在占用了端口的程序,可以用
lsof -i:5000 来查看
然后通过进程号进行杀死
kill 19468
08-7行命令的简单参数解释
1. flask模块导入Flask类2. 通过Flask类创建应用程序对象 记忆一一些more参数
默认参数:name 表示当前程序的启动入口main,如果从其他模块过来的值是:模块的名字。
默认参数:static_folder,静态资源文件夹,默认是是static(这里需要创建一个static文件夹)
默认参数:static_url_ath,静态资源访问路径,/static
默认参数:template_folder,模板文件夹,默认是:templates(这里需要创建默认文件夹templates)
file://C:/Users/huileke/Desktop/flask-day01-%E7%AC%94%E8%AE%B0%E4%BD%9C%E4%B8%9A/Snipaste_2018-06-28_23-38-46.png?lastModify=1531482117
\3. 使用app装饰器,绑定路由路径,绑视图函数。(其实就是函数,因为可以展示界面,所以叫做视图)
\4. 程序启动入口 if name == 'main'
app.run()
默认参数:host,IP:127.0.0.1
默认参数:post,
默认端口5000.
09-关于url_map
\1. url_map:存放在所有使用应用装饰绑定的路径和视图函数
格式:app.url_map,返回的是一个map集合,表示的视图函数和路径之间的映射关系。
\2. 关于这个路径是怎么看的,以及他代表的是什么含义。
10- 路由和视图函数之间的关系
绑定还可以产生多个关系:一个路由地址被多个函数绑定
\1. 如果一个路由装饰多个视图函数,那么有限访问的是哪个视图函数?
答:先装饰的优先访问。
\2. 如果多个路由装饰一个函数,通过哪些路由路径可以访问到该视图函数?
答:通过每个路径都可以访问。
11- methods和postman
\1. 如何在访问视图函数的时候指定对应的访问方式?(需要使用methods格式)
格式:@app.route('路径,methods=["访问方式1","访问方式1","访问方式1",....])
常见的访问方式有:GET, POST ,PUT, DELETE
注意点:如果不指定访问方式,默认是GET
\2. postman
注意:怎么打开,怎么启动,怎么访问服务器。
12- 反解析
\1. url_for:反解析,可以通过视图函数的名称,找到视图函数的路由路径。
格式:url_for('视图函数名称',参数)
参数格式:key = value
参数可以不写?
代码06中有测试,注意url_for是怎么设定访问地址的?这里没有特别理解。
13- 重定向
\1. redirect:重定向,通过路由路径,找到对应的视图函数。
格式:redirect('路径')
可以重定向访问的地址,在return里面做重定向。
代码07内有测试。 还有重定向和反解析的配合。
浏览器一旦检查查到状态码为:302(重定向的代号)
特点:重定向是两次请求。
可以通过运行测试代码,看到重定向的两请求,分别是302 和200
14-返回json数据
\1. 如何将返回jason数据给客户端?
一般后端程序和前端之后的交互格式都是jason。
答:
1-可以手动去指定Content-Type:application/json
2-可以使用jsonify()方法返回json数据格式,推荐使用。
如果端口占用怎么解决?
解决:
命令:
lsof -i:5000
查看运行在5000端口的程序,
然后
命令:
sudo kill 进程名称
代码08中有测试,注意其中的两种方法。其中第二种方法,还有2中书写方法,注意我们一般使用第二种,除非数据量比较多。
15-路由的动态参数
\1. 在访问数图函数的时候,如何传递数据类型格式。
格式:@app.route('路径/<数据类型:变量名>')
数据类型种类:
int 表示整数
float 表示小数
path 表示字符串类型,如果不写默认就是path
16- 自定义转换器
之所以int float pat可以过滤不同的数据类型,是因为系统已经包含了这些数据类型的转换器。(添加到默认的转换器列表中
需求:希望能够有过滤三位整数的转换器
当系统提供的转换器,满足不了需求的时候,使用自定义转换器.
\1. 自定义类,继承自BaseConverter
为什么要继承这个类?因为int 等转换器都是在这个类里,所以我们也集成这个。
\2. 编写init方法,接收两个参数,一个给父类初始化,一个给子类自己使用(正则的规则)
因为希望不同的视图函数能够匹配到不同的数据,比如这个想要邮箱,那个想要手机,呢么这个时候我们的regex就不能写死了。这样他就不通用了,所以我们需要编写init方法。
\3. 将自定义转换器类添加到默认的转换器列表中。
app.url_map.converters['key']自定义转换器名称。
app.url_map.converters["re"] = MyRegexConverter 这里的转换器的列表是以key/value的形式存在,所以我们自定义的转换器的名称可以自己设定。
然后re就会变成一个相当于变量类型的,我们可以添加到路由装饰器中,进行类型选择。
因为父类BaseConverter方法中有regex正则表达式,所以可以进行过滤。
当我们想要放弃父类的功能,我们可以重写regex的正则
添加自定义转换器列表到,默认转换器列表中。
放学看列表和视频,有点困
如果匹配不到,拿么就会报错404。
17- 异常补获
\1. 什么参数?
abort(代号): 主动抛出异常,停止该视图函数的执行。
@app.errorhandler(代号/异常对象),装饰函数,处理对应的异常页面,配合abort使用。
\2. errorhandler的捕捉可以有多种操作,分别怎么操作?
1- 捕捉对象
2- 捕捉代号
18- abort
在运行程序的时候,每当改编代码之后能不能不需要重新启动就可以部署呢?
答:可以设置 启动模式debug=True就可以了。
好处:
\1. 代码改变之后程序不需要重新启动就可以部署了。
\2. 服务器内部出错字后,在界面会有一个很复杂的友好提示。
改编代码之后,ctrl+s 就可以激活新的代码了
程序启动入口
if name == 'main'
app.run()
默认参数:host,IP:127.0.0.1 /0.0.0.0 可以在同一台电脑通过虚拟机访问。
默认参数:post,
默认端口5000.
默认参数debug:False
app.run(debug=True)
19.debug调试
20- 加载app配置信息
运行的一些配置环境怎么设置?
在app应用程序启动的时候,如何加载配置环境变量?
三种方法:
\1. 可以从类中加载
定义一个类,来加载
\2. 可以从文件中加载
加载一个config.ini文件
\3. 可以从环境变量中加载,很少使用
21- request
request:里面封装的是和请求参数有关的内容,比如:请求路径,请求方式,请求参数等等。
获取请求参数等。
-
-
01-flask基础笔记.zip
5.43 KB, 阅读权限: 20, 下载次数: 10
作者: 不二晨 时间: 2018-7-15 11:43

作者: 小影姐姐 时间: 2018-7-17 17:05

作者: 不二晨 时间: 2018-7-19 13:36
优秀,加油
作者: 吴琼老师 时间: 2018-7-19 16:56

作者: 摩西摩西OvO 时间: 2018-7-23 10:37

作者: 不二晨 时间: 2018-7-23 13:40
优秀,加油加油!
作者: 摩西摩西OvO 时间: 2018-7-25 17:05

作者: samli1984 时间: 2018-8-1 15:34
| 欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |