Flask 本身相当于一个内核,其他几乎所有的功能都要用到扩展,都需要用第三方的扩展来实现,比如可以用 Flask 扩展加入ORM、窗体验证工具,文件上传、身份验证等。Flask 没有默认使用的数据库,你可以选择 MySQL,也可以用 NoSQL。

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

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:简单而可扩展的管理接口的框架

#安装

pip install flask==0.10.1 #后面为版本号

1、新建文件helloworld.py

#导入Flask类

from flask importFlask#Flask函数接收一个参数__name__,它会指向程序所在的包

app= Flask(__name__)#装饰器的作用是将路由映射到视图函数 index

@app.route(‘/‘)defindex():return ‘Hello World‘

#Flask应用程序实例的 run 方法 启动 WEB 服务器

if __name__ == ‘__main__‘:

app.run()#可以指定运行的主机IP地址,端口,是否开启调试模式

#app.run(host="0.0.0.0", port=8888, debug = True)

2、相关配置参数

Flask 程序实例在创建的时候,需要默认传入当前 Flask 程序所指定的包(模块)

app = Flask(__name__)

import_name

Flask程序所在的包(模块),传 __name__ 就可以

其可以决定 Flask 在访问静态文件时查找的路径

static_path

静态文件访问路径(不推荐使用,使用 static_url_path 代替)

static_url_path

静态文件访问路径,可以不传,默认为:/ + static_folder

static_folder

静态文件存储的文件夹,可以不传,默认为 static

template_folder

模板文件存储的文件夹,可以不传,默认为 templates

3.加载配置文件

在 Flask 程序运行的时候,可以给 Flask 设置相关配置,比如:配置 Debug 模式,配置数据库连接地址等等,设置 Flask 配置有以下三种方式:

从配置对象中加载(常用)

app.config.form_object()

从配置文件中加载

app.config.form_pyfile()

从环境变量中加载(不常用)

app.config.from_envvar()

3.1配置对象加载

#配置对象,里面定义需要给 APP 添加的一系列配置

classConfig(object):

DEBUG=True#创建 Flask 类的对象,指向程序所在的包的名称

app = Flask(__name__)#从配置对象中加载配置

app.config.from_object(Config)

3.2配置文件加载

创建配置文件 config.ini,在配置文件中添加配置

格式eg: DEBUG = True

#创建 Flask 类的对象,指向程序所在的包的名称

app = Flask(__name__)#从配置文件中加载配置

app.config.from_pyfile(‘config.ini‘)

3.4读取配置

app.config.get()

在视图函数中使用 current_app.config.get()

注:Flask 应用程序将一些常用的配置设置成了应用程序对象的属性,也可以通过属性直接设置/获取某些配置:app.debug = True

4 路由定义

4.1指定路由地址

#指定访问路径为 hello

@app.route(‘/hello‘)defdemo1():return ‘hello world‘

4.2 给路由传参

#路由传递参数

@app.route(‘/user/‘)defuser_info(user_id):return ‘hello %s‘ %user_id#路由传递的参数默认当做 string 处理,也可以指定参数的类型

#路由传递参数

@app.route(‘/user/‘)defuser_info(user_id):return ‘hello %d‘ % user_id

4.3指定请求方式

在 Flask 中,定义一个路由,默认的请求方式为:

GET

OPTIONS(自带)

HEAD(自带)

@app.route(‘/login‘, methods=[‘GET‘, ‘POST‘]) #支持GET和POST,并且支持自带的OPTIONS和HEAD

deflogin():#直接从请求中取到请求方式并返回

return request.method

4.4 正则匹配路由

在 web 开发中,可能会出现限制用户访问规则的场景,那么这个时候就需要用到正则匹配,根据自己的规则去限定请求参数再进行访问

具体实现步骤为:

导入转换器基类:在 Flask 中,所有的路由的匹配规则都是使用转换器对象进行记录

自定义转换器:自定义类继承于转换器基类

添加转换器到默认的转换器字典中

使用自定义转换器实现自定义匹配规则

(1)导入转换器基类

from werkzeug.routing import BaseConverter

(2)自定义转换器

#自定义正则转换器

classRegexConverter(BaseConverter):def __init__(self, url_map, *args):

super(RegexConverter, self).__init__(url_map)#将接受的第1个参数当作匹配规则进行保存

self.regex = args[0]

(3)添加转换器到默认的转换器字典中,并指定转换器使用时名字为: re

app = Flask(__name__)#将自定义转换器添加到转换器字典中,并指定转换器使用时名字为: re

app.url_map.converters[‘re‘] = RegexConverter

(4)使用转换器去实现自定义匹配规则

#当前此处定义的规则是:3位数字

@app.route(‘/user/‘)defuser_info(user_id):return "user_id 为 %s" % user_id

#系统自带转换器

DEFAULT_CONVERTERS ={‘default‘: UnicodeConverter,‘string‘: UnicodeConverter,‘any‘: AnyConverter,‘path‘: PathConverter,‘int‘: IntegerConverter,‘float‘: FloatConverter,‘uuid‘: UUIDConverter,

}#系统自带的转换器具体使用方式在每种转换器的注释代码中有写,请留意每种转换器初始化的参数

自定义转换器其他两个函数实现:

继承于自定义转换器之后,还可以实现 to_python 和 to_url 这两个函数去对匹配参数做进一步处理:

to_python:

该函数参数中的 value 值代表匹配到的值,可输出进行查看

匹配完成之后,对匹配到的参数作最后一步处理再返回,比如:转成 int 类型的值再返回:

classRegexConverter(BaseConverter):def __init__(self, url_map, *args):

super(RegexConverter, self).__init__(url_map)#将接受的第1个参数当作匹配规则进行保存

self.regex =args[0]defto_python(self, value):return int(value) #在视图函数中可以查看参数的类型,由之前默认的 str 已变成 int 类型的值

to_url:

在使用 url_for 去获取视图函数所对应的 url 的时候,会调用此方法对 url_for 后面传入的视图函数参数做进一步处理

具体可参见 Flask 的 app.py 中写的示例代码:ListConverter

原文地址:https://www.cnblogs.com/caijunchao/p/12663871.html

python flask_Python Flask框架详解相关推荐

  1. python之flask框架详解

    目录 前言 1.新建文件helloworld.py 2.相关配置参数 3.加载配置文件 3.1配置对象加载 3.2配置文件加载 3.3读取配置 4 路由定义 4.1指定路由地址 4.2 给路由传参 4 ...

  2. python flask框架详解

    Flask是一个Python编写的Web 微框架,让我们可以使用Python语言快速实现一个网站或Web服务.本文参考自Flask官方文档, 英文不好的同学也可以参考中文文档 1.安装flask pi ...

  3. python flask框架是什么_Python Flask框架详解

    原博文 2020-04-08 23:33 − 记录请求使用的HTTP方法 Flask 本身相当于一个内核,其他几乎所有的功能都要用到扩展,都需要用第三方的扩展来实现,比如可以用 Flask 扩展加入O ...

  4. Python pytest测试框架详解

    pytest介绍: pytest是一个非常成熟的全功能的Python测试框架: 1.简单灵活,容易上手 2.支持参数化 3.测试用例的skip和xfail,自动失败重试等处理 4.能够支持简单的单元测 ...

  5. python+selenium自动化测试框架详解,我就讲一遍

    目录 前言 1.测试框架分层设计 2.测试框架目录结构 3.编写用例方法 4.测试结果展示 前言 本文整理归纳以往的工作中用到的东西,现汇总成基础测试框架提供分享. 框架采用python3 + sel ...

  6. python 语音识别 windows_对Python 语音识别框架详解

    如下所示: from win32com.client import constants import os import win32com.client import pythoncom speake ...

  7. jQuery Validate验证框架详解

    2019独角兽企业重金招聘Python工程师标准>>> 一.导入js库 <script type="text/javascript" src="& ...

  8. WebDriver自动化测试框架详解

    webDriver自动化测试框架详解 一. 简介 WebDriver API相对于Selenium Remote Control API来说,虽然同样是控制浏览器,但它的编程接口更加简洁 WebDri ...

  9. Android 动画框架详解,第 1 部分

    2019独角兽企业重金招聘Python工程师标准>>> Android 平台提供了一套完整的动画框架,使得开发者可以用它来开发各种动画效果,本文将向读者阐述 Android 的动画框 ...

  10. python的图书管理项目教程_基于python图书馆管理系统设计实例详解

    写完这个项目后,导师说这个你完全可以当作毕业项目使用了,写的很全,很多的都设计考虑周全,但我的脚步绝不止于现在,我想要的是星辰大海!与君共勉! 这个项目不是我的作业, 只是无意中被拉进来了,然后就承担 ...

最新文章

  1. Django的路由系统
  2. 怎么获取上一个html网页传过来的值_爬虫:一个简单实例说明爬虫机制
  3. 人类史上最大最好的希望事件
  4. TiKV 源码解析系列文章(二)raft-rs proposal 示例情景分析
  5. 良心发现,时隔一年再回首莫比乌斯反演(公式性质证明+题目练习)
  6. 图片查看器 bmp jpg png 动态gif office 2007风格
  7. marlab中主成分得分怎么求_PCA(主成分分析) 和 SVD (奇异值分解)
  8. 前端数据加密(Base64、MD5、AES、RSA)
  9. linux mint借用deepin-wine安装QQ/微信
  10. C#在word中插入表格(包含从excel中选取表格插入到word中)
  11. 来曲唑十二烷基硫酸钠/苯丁酸氮芥/层状双金属氢氧化物纳米杂化物
  12. Win10电脑浏览器连不上网
  13. dependency check工具的使用
  14. 【C#】两种方式实现给PDF文件加水印,源码分享
  15. python的pth打开方式_pytorch 加载(.pth)格式的模型实例
  16. Paypal 实现自动订阅
  17. 通信原理与MATLAB(二):DSB的调制解调
  18. 1Flask使用2路由3模板
  19. 红米路由器ac2100怎样设置ipv6_红米(Redmi)路由器AC2100怎么设置
  20. Java--文件(File)

热门文章

  1. 基础算法1——插入排序和希尔排序
  2. 60.Linux/Unix 系统编程手册(下) -- SOCKET: 服务器设计
  3. 10.GitLab 服务器和外部服务集成
  4. 8.TCP/IP 详解卷1 --- Traceroute 程序
  5. 8. PHP7 安装
  6. 108.PHP输出CSV和EXCEL两种简单的方法
  7. 10.XSD 元素替换
  8. 1. SVN (1)
  9. 11. Window open() 方法
  10. 编程语言-脚本编程-PowerShell相关整理