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:里面封装的是和请求参数有关的内容,比如:请求路径,请求方式,请求参数等等。 获取请求参数等。
|