A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

saitian09

初级黑马

  • 黑马币:

  • 帖子:

  • 精华:

© saitian09 初级黑马   /  2018-7-13 19:46  /  2231 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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
  • BS/CS 与服务式交互的差别,需要再去复习一下。

1.1 8种常见请求
​    get 放到请求地址
​    post 可以放到请求体也可以放到请求地址。
03-虚拟环境安装1.为什么要使用虚拟环境?
1. 什么是虚拟环境?
实际上就是一个特殊的文件夹,可以安装我所需要运行的程序环境。
2. 为什么要安装虚拟环境?
在开发过程中,需要使用python的某些工具包he框架的时候需要联网安装,是用虚拟环境可以在不同的虚拟机上测试不同的版本。
  • 比如联网安装Flask框架flask-0.10.1版本
  • sudo pip install flask==0.10.1
如果在一台电脑上, 想开发多个不同的项目, 需要用到同一个包的不同版本, 如果使用上面的命令, 在同一个目录下安装或者更新, 新版本会覆盖以前的版本, 其它的项目就无法运行了.
有了虚拟环境之后,可以非常方便的调试各种版本的flask,python解释器。
  • 虚拟环境可以搭建独立的python运行环境, 使得单个项目的运行环境与其它项目互不影响.
  • 所有的虚拟环境都位于/home/下的隐藏目录.virtualenvs下

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. 安装flask
pip install flask==0.10.1
这里就可以完成安装了
8. 查看当前虚拟环境中有哪些扩展包?
进入虚拟环境后命令行内:输入

pip freeze
file://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

10 个回复

正序浏览
   
回复 使用道具 举报
回复 使用道具 举报
优秀,加油加油!
回复 使用道具 举报
回复 使用道具 举报
回复 使用道具 举报
优秀,加油
回复 使用道具 举报
回复 使用道具 举报
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马