flask 框架第一天学习笔记
发布日期:2021-11-02 02:26:44 浏览次数:0 分类:技术文章

Flask

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

Flask 本身相当于一个内核,其他几乎所有的功能都要用到扩展(邮件扩展Flask-Mail,用户认证Flask-Login,数据库Flask-SQLAlchemy),都需要用第三方的扩展来实现。比如可以用 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:简单而可扩展的管理接口的框架

什么是Flask及其好处

Flask是一个Python编写的Web微框架,让我们可以使用Python语言快速实现一个网站或Web服务。

初始化参数

Flask 程序实例在创建的时候,需要默认传入当前 Flask 程序所指定的包(模块),接下来就来详细查看一下 Flask 应用程序在创建的时候一些需要我们关注的参数:

  • import_name
    • Flask程序所在的包(模块),传 __name__ 就可以
    • 其可以决定 Flask 在访问静态文件时查找的路径
  • static_path
    • 静态文件访问路径(不推荐使用,使用 static_url_path 代替)
  • static_url_path
    • 静态文件访问路径,可以不传,默认为:/ + static_folder
  • static_folder
    • 静态文件存储的文件夹,可以不传,默认为 static
  • template_folder
    • 模板文件存储的文件夹,可以不传,默认为 templates
app = Flask(__name__,            # static_path="/static",    #静态文件访问路径(弃用)            static_url_path="/static",  #静态文件访问路径            static_folder="static",     #静态文件的存储路径            template_folder="templates",#模板文件的路径            )

程序加载配置

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

  • 从配置对象中加载(常用)
    • app.config.from_object()
  • 从配置文件中加载
    • app.config.from_pyfile()
  • 从环境变量中加载(了解)
    • app.config.from_envvar()
# <---从对象--->class Config():    DEBUG = Trueapp.config.from_object(Config)  # <---从config.ini文件中--->app.config.from_pyfile("config.ini") #常用配置,可以直接使用app.debug = True # 方法一app.config["DEBUG"] = True  # 方法二(推荐使用)

以下演练以设置应用程序的 DEBUG(调试模式) 为例,设置应用为调式模式这后,可以实现以下功能:

  1. 程序代码修改后可以自动重启服务器
  2. 在服务器出现相关错误的时候可以直接将错误信息进行抛出到控制台打印

flask中jsonify和json.dumps()的区别是什么?

jsonify是flask自带的对字典转化成json对象的方法,json.dumps()是python将字典转化成json对象的方法。

两者的区别在于:

  • 1.jsonify返回的数据,content_type为application/json

  • 2.json.dumps()返回的数据,本质为字符串,所以content_type为text/html

不推荐使用 json.dumps 转成 JSON 字符串直接返回,因为返回的数据要符合 HTTP 协议规范,如果是 JSON 需要指定 content-type:application/json才符合浏览器要求

Flask里面怎么执行重定向的?

从flask导入redirect模块,并用其中的redirect方法

  • 重定向到 百度
# 重定向@app.route('/demo4')def demo4():    return redirect('http://www.baidu.com')#注意1: redirect使用前需要从flask中导入#注意2: 重定向的网页链接前都要加上HTTP://

重定向到自己写的视图函数

  • 可以直接填写自己 url 路径

  • 也可以使用 url_for 生成指定视图函数所对应的 url

@app.route('/demo1')def demo1():	return 'demo1'@app.route('/demo4')    # 重定向def demo4():     	return redirect(url_for('demo1')) #写函数名

自定义状态码

  • 在 Flask 中,可以很方便的返回自定义状态码,以实现不符合 http 协议的状态码,例如:status code: 666
@app.route('/demo4')def demo4():    return 'demo4', 666  #在return后面直接加上就行,没有任何技巧

获取请求参数

  • request:flask中代表当前请求的 request 对象
  • 作用:在视图函数中取出本次请求数据
  • 导入from flask import request

常用的属性如下:

属性 说明 类型
data 记录请求的数据,并转换为字符串 *
form 记录请求中的表单数据 MultiDict
args 记录请求中的查询参数 MultiDict
cookies 记录请求中的cookie信息 Dict
headers 记录请求中的报文头 EnvironHeaders
method 记录请求使用的HTTP方法 GET/POST
url 记录请求的URL地址 string
files 记录请求上传的文件 *

示例

  • 获取请求中查询字符串
  • http://127.0.0.1:5000/demo1?a=10
# 指定访问路径为 demo1@app.route("/demo1")def demo1():    return "demo1 %s" % request.method

在这里插入图片描述

上一篇:Flask的状态保持和上下文管理
下一篇:Ubuntu中虚拟环境的搭建