前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【一周掌握Flask框架学习笔记】Flask概念及基础

【一周掌握Flask框架学习笔记】Flask概念及基础

作者头像
天道Vax的时间宝藏
发布2021-08-11 16:16:48
3.1K0
发布2021-08-11 16:16:48
举报

为什么要用Web框架

Web应用程序的本质

Web(World Wide Web)诞生最初的目的,是为了利用互联网交流工作文档。

在这里插入图片描述
在这里插入图片描述

使用WEB框架的优点

web网站发展至今,特别是服务器端,涉及到的知识、内容,非常广泛。这对程序员的要求会越来越高。如果采用成熟,稳健的框架,那么一些基础的工作,比如,安全性,数据流控制等都可以让框架来处理,那么程序开发人员可以把精力放在具体的业务逻辑上面。使用框架的优点: 稳定性和可扩展性强 可以降低开发难度,提高开发效率。 总结一句话:避免重复造轮子

在这里插入图片描述
在这里插入图片描述

Flask简介:

Flask诞生于2010年,是用Python语言基于Werkzeug工具箱编写的轻量级Web开发框架。

Flask本身相当于一个内核,其他几乎所有的功能都要用到扩展(邮件扩展Flask-Mail,用户认证Flask-Login),都需要用第三方的扩展来实现。

其 WSGI 工具箱采用 Werkzeug(路由模块),模板引擎则使用 Jinja2。这两个也是Flask框架的核心。

Python最出名的框架要数Django,此外还有Flask、Tornado等框架。虽然Flask不是最出名的框架,但是Flask应该算是最灵活的框架之一,这也是Flask受到广大开发者喜爱的原因。

Flask常用扩展包:

Flask-SQLalchemy:操作数据库; Flask-migrate:管理迁移数据库; Flask-Mail:邮件; Flask-WTF:表单; Flask-Bable:提供国际化和本地化支持,翻译; Flask-script:插入脚本; Flask-Login:认证用户状态; Flask-OpenID:认证; Flask-RESTful:开发REST API的工具; Flask-Bootstrap:集成前端Twitter Bootstrap框架; Flask-Moment:本地化日期和时间; Flask-Admin:简单而可扩展的管理接口的框架 扩展列表:http://flask.pocoo.org/extensions/

中文文档(http://docs.jinkan.org/docs/flask/) 英文文档(http://flask.pocoo.org/docs/0.12/)

Flask与Django对比

Django vs Flask

在这里插入图片描述
在这里插入图片描述

Flask

在这里插入图片描述
在这里插入图片描述

框架之间的差别

  • Django功能大而全,Flask只包含基本的配置 Django的一站式解决的思路,能让开发者不用在开发之前就在选择应用的基础设施上花费大量时间。Django有模板,表单,路由,认证,基本的数据库管理等等内建功能。与之相反,Flask只是一个内核,默认依赖于两个外部库: Jinja2 模板引擎和 Werkzeug WSGI 工具集,其他很多功能都是以扩展的形式进行嵌入使用。
  • Flask 比 Django 更灵活 Flask 在 Django 之后发布,现阶段有大量的插件和扩展满足不同需要 Django发布于2005年,Flask创始于2010年年中。

Flask 安装环境

使用虚拟环境安装Flask,可以避免包的混乱和版本的冲突,虚拟环境是Python解释器的副本,在虚拟环境中你可以安装扩展包,为每个程序单独创建的虚拟环境,可以保证程序只能访问虚拟环境中的包。而不会影响系统中安装的全局Python解释器,从而保证全局解释器的整洁。

虚拟环境使用virtualenv创建,可以查看系统是否安装了virtualenv:

代码语言:javascript
复制
$ virtualenv --version

安装虚拟环境

代码语言:javascript
复制
$ sudo pip install virtualenv
$ sudo pip install virtualenvwrapper

创建虚拟环境(须在联网状态下)

代码语言:javascript
复制
$ mkvirtualenv Flask_py

安装完虚拟环境后,如果提示找不到mkvirtualenv命令,须配置环境变量:

1、创建目录用来存放虚拟环境

代码语言:javascript
复制
mkdir 
$HOME/.virtualenvs

2、打开~/.bashrc文件,并添加如下:

代码语言:javascript
复制
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh

3、运行

代码语言:javascript
复制
source ~/.bashrc

4、进入虚拟环境

代码语言:javascript
复制
$ workon Flask_py

5、退出虚拟环境

如果所在环境为真实环境,会提示deactivate:未找到命令

代码语言:javascript
复制
$ deactivate Flask_py

安装Flask

指定Flask版本安装

代码语言:javascript
复制
$ pip install flask == 0.10.1
pip freeze > requirements.txt

Mac系统:

代码语言:javascript
复制
$ easy_install flask == 0.10.1

在ipython中测试安装是否成功

代码语言:javascript
复制
$ from flask import Flask

requirements 文件

Python 项目中必须包含一个 requirements.txt 文件,用于记录所有依赖包及其精确的版本号,以便在新环境中进行部署操作。 在虚拟环境使用以下命令将当前虚拟环境中的依赖包以版本号生成至文件中:

代码语言:javascript
复制
$ pip freeze >requirements.txt

安装或升级包后,最好更新这个文件以保证虚拟环境中的依赖包。 需求文件的内容示例如下:

代码语言:javascript
复制
alembic==0.9.2
blinker==1.4
click==6.7
dominate==2.3.1
Flask==0.10.1
Flask-Bootstrap==3.3.7.1
Flask-Login==0.4.0
Flask-Mail==0.9.1
Flask-Migrate==2.0.4
Flask-Redis==0.3.0
Flask-Script==2.0.5
Flask-SQLAlchemy==2.2
Flask-Testing==0.6.2
Flask-WTF==0.14.2
gunicorn==19.7.1
itsdangerous==0.24
Jinja2==2.9.6
Mako==1.0.6
MarkupSafe==1.0
MySQL-python==1.2.5
mysqlclient==1.3.10
PyMySQL==0.7.11
python-dateutil==2.6.0
python-editor==1.0.3
redis==2.10.5
six==1.10.0
SQLAlchemy==1.1.10
uWSGI==2.0.15
visitor==0.1.3
Werkzeug==0.12.2
WTForms==2.1
xmltodict==0.11.0

当需要创建这个虚拟环境的完全副本,可以创建一个新的虚拟环境,并在其上运行以下命令:

代码语言:javascript
复制
$ pip install -r requirements.txt

从 Hello World 开始

Flask程序运行过程

当客户端想要获取资源时,一般会通过浏览器发起HTTP请求。 此时,Web服务器会把来自客户端的所有请求都交给Flask程序实例 程序实例使用Werkzeug来做路由分发(URL请求和视图函数之间的对应关系)。 根据每个URL请求,找到具体的视图函数并进行调用。 在Flask程序中,路由的实现一般是通过程序实例的装饰器实现。 Flask调用视图函数后,可以返回两种内容: 字符串内容:将视图函数的返回值作为响应的内容,返回给客户端(浏览器) HTML模版内容:获取到数据后,把数据传入HTML模板文件中,模板引擎负责渲染HTTP响应数据,然后返回响应数据给客户端(浏览器)

示例:

  • 新建Flask项目
  • 导入Flask类
代码语言:javascript
复制
 from flask import Flask
  • Flask函数接收一个参数name,它会指向程序所在的模块
代码语言:javascript
复制
app = Flask(__name__)
  • 装饰器的作用是将路由映射到视图函数index
代码语言:javascript
复制
@app.route('/')
def index():
    return 'Hello World'
  • Flask应用程序实例的run方法启动WEB服务器
代码语言:javascript
复制
if __name__ == '__main__':
    app.run()

路由定义的基本方式

请求方式限定

使用 methods 参数指定可接受的请求方式,可以是多种

代码语言:javascript
复制
@app.route('/',methods=['GET', 'POST'])
def hello():
    return 'hello world'

给路由传参示例

有时我们需要将同一类URL映射到同一个视图函数处理,比如:使用同一个视图函数 来显示不同用户的订单信息。 路由传递的参数默认当做string处理

代码语言:javascript
复制
@app.route('/orders/<order_id>')
def hello_itheima(order_id):
    # 此处的逻辑: 去查询数据库改用户的订单信息, 并返回
    print type(order_id) # 类型为unicode
    return 'hello itcast %d' % order_id

这里指定int, 会调用系统的路由转换器进行匹配和转换.

代码语言:javascript
复制
- 大致原理是将参数强转为int, 如果成功, 则可以进行路由匹配
- 如果参数无法转换成功, 就无法匹配该路由
@app.route('/orders/<int:order_id>')
def hello_itheima(order_id):
    print type(order_id) # 类型为int
    return 'hello itcast %d' % order_id
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-08-03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为什么要用Web框架
    • Web应用程序的本质
      • 使用WEB框架的优点
      • Flask简介:
        • Flask与Django对比
          • 框架之间的差别
          • Flask 安装环境
            • 1、创建目录用来存放虚拟环境
              • 2、打开~/.bashrc文件,并添加如下:
                • 3、运行
                  • 4、进入虚拟环境
                    • 5、退出虚拟环境
                      • 安装Flask
                      • requirements 文件
                      • 从 Hello World 开始
                        • Flask程序运行过程
                          • 示例:
                          • 路由定义的基本方式
                            • 请求方式限定
                              • 给路由传参示例
                              相关产品与服务
                              云数据库 MySQL
                              腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
                              领券
                              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档