01-初识Flask
本章讲点
概述flask
一个轻量级的python语言开发的web框架
概述如何学习一个新的技术点
分为5步走
快速上手一个flask实例
详解虚拟环境
虚拟环境就是一直让我们纠结了很久的pycharm的运行环境问题
以及带入第一个falsk实例
初始flask
什么是Flask?
flask历史:
Flask 本是作者 Armin Ronacher的一个愚人节玩笑 [1] ,不过后来大受欢迎,进而成为一个正式的python编写的web框架



正式介绍:
Flask是一个Python编写的Web 微框架,让我们可以使用Python语言快速实现一个网站或Web服务,在介绍Flask之前首先来聊下它和Django的联系以及区别,django个大而全的web框架,它内置许多模块,flask是一个小而精的轻量级框架,Django功能大而全,Flask只包含基本的配置, Django的一站式解决的思路,能让开发者不用在开发之前就在选择应用的基础设施上花费大量时间。Django有模板,表单,路由,认证,基本的数据库管理等等内建功能。与之相反,Flask只是一个内核,默认依赖于2个外部库: Jinja2 模板引擎和 Werkzeug WSGI , flask的使用特点是基本所有的工具使用都依赖于导入的形式去扩展.
关键词 :1 flask核心, 2 Werkzeug WSGI工具箱, 3 Jinja2 模板引擎 (一个核心两个库) 4 轻量级 其他的组件想使用均已导包的形式使用
为什么要有flask?
flask的概念是海盗, 而django的感觉更像是国家舰队, 但是往往在很多时候海盗并不输给舰队.
- 并发量对比: Flask可以抗并发的能力丝毫不输给django
- 可拓展性: Flask 在 Django 之后发布,现阶段有大量的插件和扩展满足不同需要.
- 灵活性: Flask 比 Django 更灵活 用Flask来构建应用之前,选择组件的时候会给开发者带来更多的灵活性 .设计风格对比: 对于用过MVC框架的开发者来说,上手Django是很快的,因为Django也是MVC模式。Flask相对自由完全可以按照开发者的意愿去基于蓝图的功能设计
- orm对比: Flask对 NoSQL 数据库的契合度远远优于 Django
优点:
flask从对并发的的支持基本满足需求,灵活以及可扩展性上要优于其他web框架,对各种数据库的契合度都非常高
关键词: 1. 并发基本满足需 2 .灵活性可拓展性高 3. 对各种数据库的契合度都比较高
缺点:
弊端也很明显,如果你不是一个经验丰富的开发者,你很可能会把整个项目架构设计的乱七八糟。(当你学完flask相关的课程, 这个问题迎刃而解)
真实的生产环境当中:
很多时候一个项目刚开始并不觉得是个大项目,做到后面功能越来越多,扩展越来越多,就变成了一个大项目,而使用Flask就很容易的完成这个任务,小型项目快速开发,大项目设计灵活。
关键词: 小型项目快速开发,大项目设计灵活。
怎么用flask?
接下来我们会详细的讲解
- flask的url
- flask的模板
- flask的视图
- flask的orm
- flask上下文、请求上下文、g对象
- flask的常用组件
- 重点:如何在设计出一套专业的真实生产环境的flask框架
快速上手一个flask实例
如何快速上手一个新的技术点?
通俗点说就是如何学习一样新东西, 每个人有每个人不同的学习方法, 但是这里要聊的不是那种方法最优, 最好, 而是给大家一个思路, 慢慢形成自己的学习方法也可以称之为----------自己的套路
关于爱情有一个说法
自古深情留不住, 唯有套路得人心
好的那么我们要带着自己是高富帅绝对自信的心态开始我们的套路 去追求一个姑娘 去学习一门技术
1 大致了解
学习每一个新的技术点就像是追求一个新的姑娘
首先你要去大概了解一下这个姑娘吧, 可以通过照片微信等等, 非常对!, 那么学习技术也是一个道理
这个时候 你可以去网上搜一搜, 博客园也好, 文档也好, 哪怕是百度知道, 你要以最快的速度对这个技术建立宏观的认知
2 浅唱则止
好了 到了这一步你已经弄明白了这个技术对于你的重要性 也就是说你要找到官方文档或者非常全面的技术博客去细致的去研究 一些入门级别的注意事项, 并且收集到对于这个技术的代码片段, 设计理念, 注意事项等等. 类比到生活上就是你要明白这个姑娘的喜好, 与这个姑娘对话.
3 牛刀小试
到了这部 你已经对这个技术的宏观认知已经建立起来, 也基本了解到了一些注意事项, 这个时候蓄势待发, 你需要一个小例子, 保证他跑起来, 来抚平心中的躁动,去把这门技术的基本知识转化成自己的, 同样我们类比一下生活, 你爱上了这个姑娘, 知道了她的喜好, 这个时候你就要想进一切办法让她成为你的女朋友, 当这个小例子跑起来的那一刹那, 那么这个姑娘将属于你.
4 添砖加瓦
好了!, 在一段恋爱中, 最难的事情你已经做完了, 那么同样在学习一个新的技术点的时候最难的阶段已经度过了, 现在需要做的就是, 去拓展, 如果在工作中可以根据你们的项目去拓展你所需要的功能, 尽量在最短的时间里面找到最优解, 在工作中如果项目催的紧, 那么时间就是一切, 待到对这个技术的理解越来越深入, 一定要记录自己的所学所得
那如果在平时的学习中呢, 我们可以在某一们技术中由浅入深, 循序渐进, 及时记录.
5 形成体系
把之前自己的记录 , 形成体系的整理出来, 方便自己日后查阅翻读.
关键字:
- 大致了解 -----------------> 建立宏观认知
- 浅尝则之 -----------------> 略微详细的查阅文档,记录注意事项
- 牛刀小试 -----------------> 找到一个实例尽快的跑起来
- 添砖加瓦 -----------------> 根据你的项目需求或者学习进度针对性的学习
- 形成体系 -----------------> 形成体系的去总结自己的所学所得
首先详解虚拟环境
虚拟环境是什么?
通俗的来讲,虚拟环境就是借助虚拟机docker来把一部分内容独立出来,我们把这部分独立出来的东西称作“容器”,在这个容器中,我们可以只安装我们需要的依赖包,各个容器之间互相隔离,互不影响的一个环境称之为虚拟环境, 再通俗一点我们的pycharm有个功能就可以直接造出来一个虚拟环境, 我们所跑的程序就依赖于这个环境.
为何要有虚拟环境?
它是一个虚拟化,从电脑独立开辟出来的环境。譬如,本次学习需要用到flask,我们可以做一个flask的虚拟环境,里面只需要在这个环境里安装flask相关包就可以了,而Django只需要Django的包就可以了,爬虫只需要scrapy的包就行了, 但是可能每个项目使用的框架库并不一样,或使用框架的版本不一样,这样需要我们根据需求不断的更新或卸载相应的库。直接怼我们的Python环境操作会让我们的开发环境和项目造成很多不必要的麻烦,管理也相当混乱。
1、使用不同应用开发环境独立开发
2、环境升级不影响其他应用,也不会影响全局的Python环境,虚拟环境就是讲全局环境做一个私有的复制
3、它可以防止系统中出现包管理混乱和版本的冲突
关键词: 解决了包管理混乱、版本冲突、提高了移植性
如何使用虚拟环境?
1 安装
这里我们使用virtualenv虚拟开发环境
pip install virtualenvwrapper-win

2 虚拟环境基本操作(跟着图片操作就ok)
2.1创建一个虚拟环境
# 利用安装好的包 创建一个我们自己的虚拟环境 mkvirtualenv flask_env_first
然后开始安装我们需要的各种包 pip install 包名

关于虚拟环境的更多操作
#切换到指定的虚拟环境:
workon flaks_env_first
#退出虚拟环境:
deactivate
#删除指定的虚拟环境,比如flask-env
rmvirtaulenv flask-env_first
#列出所有虚拟环境:
lsvirtualenv
#进入到虚拟环境所在的目录
cdvirtualenv
pycharm 引用之前安装好的虚拟环境




正式开始我们的第一个flask实例
我们已经试过虚拟环境和pycham的连用了 现在我们开始重新创建我们的第一个flask项目便于巩固之前的虚拟环境引用


详解主页面的几条主干语句
# 从flask这个包中导入Flask这个类 # Flask这个类是项目的核心,以后大多数的操作都是基于这个类产生的对象 # 就像我们之前学的类和对象的关系 我们可以拿着这个对象干很多的事情 from flask import Flask # 这就是我们非常核心的代码 以后学的所用的东西大多数都是基于这个类实例出来的对象 # 那这个__name__是干嘛用的呢? # 这个__name__是便于这个项目执行功能的时候路径寻找的的依赖 # 比如找一个模板文件啊 # 比如找一个具体的报错的位置啊... app = Flask(__name__) # 到了这了 我们之前用写django 专门有一个位置写url # 大家有没有觉得特别麻烦呢 # flask就比较简单粗暴了 直接写在了视图函数的上面 # 单独写一个/就是我们要访问根目录的意思 @app.route('/') def hello_world(): return 'Hello World!' @app.route('/get_book/') def get_boook(): return '老男孩python全栈开发' if __name__ == '__main__': # app.run() 是什么意思呢? # 我们说过了app是整个项目都是基于这个对象 # 当然了这个app.run() 就是就是我们本地用于测试时候使用的, # 到了真实的项目部署的时候 我们是不会用这个的 因为性能非常低 # app.run() 原理是一个死循环 然后内部是一只在阻塞的监听 # while True: # listen() app.run()

浙公网安备 33010602011771号