IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 【一周掌握Flask框架学习笔记】Flask概念及基础 -> 正文阅读

[Python知识库]【一周掌握Flask框架学习笔记】Flask概念及基础

为什么要用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:

$ virtualenv --version

安装虚拟环境

$ sudo pip install virtualenv
$ sudo pip install virtualenvwrapper

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

$ mkvirtualenv Flask_py

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

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

mkdir 
$HOME/.virtualenvs

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

export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh

3、运行

source ~/.bashrc

4、进入虚拟环境

$ workon Flask_py

5、退出虚拟环境

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

$ deactivate Flask_py

安装Flask

指定Flask版本安装

$ pip install flask == 0.10.1
pip freeze > requirements.txt

Mac系统:

$ easy_install flask == 0.10.1

在ipython中测试安装是否成功

$ from flask import Flask

requirements 文件

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

$ pip freeze >requirements.txt

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

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

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

$ pip install -r requirements.txt

从 Hello World 开始

Flask程序运行过程

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

示例:

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

路由定义的基本方式

请求方式限定

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

@app.route('/',methods=['GET', 'POST'])
def hello():
    return 'hello world'

给路由传参示例

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

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

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

- 大致原理是将参数强转为int, 如果成功, 则可以进行路由匹配
- 如果参数无法转换成功, 就无法匹配该路由
@app.route('/orders/<int:order_id>')
def hello_itheima(order_id):
    print type(order_id) # 类型为int
    return 'hello itcast %d' % order_id
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-08-06 09:35:07  更:2021-08-06 09:35:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 6:59:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码