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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

saitian09

初级黑马

  • 黑马币:

  • 帖子:

  • 精华:

© saitian09 初级黑马   /  2018-7-13 19:46  /  1510 人查看  /  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 个回复

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