博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Flask的简单认识
阅读量:4697 次
发布时间:2019-06-09

本文共 4560 字,大约阅读时间需要 15 分钟。

一. Flask的启动

from flask import Flaskapp = Flask(__name__)app.run()
三行代码启动Flask
from flask import Flaskapp = Flask(__name__)@app.route("/index")    # 路由def index():                  # 视图      return "Hello World!"app.run()
六行代码启动并响应

二. Flask的响应

  from flask import template_render, redirect

  1. 和djangp对应的response

    HTTPResponse  return        返回字符串

    render       template_render    返回html页面 

    redirect      redirect       重定向

  2. Flask封装的response

    send_file("src")    打开并返回文件内容, 响应头Content-Type: 文件类型/格式

    jsonify({k:v})      返回一个json格式字符串, Content-Type:application/json

三. Flask的请求

  from flask import request

  request.method    请求方式get post 

  request.args       获取url中的参数, 本质上可以理解为字典 to_dict()

  request.form       获取FormData中的数据, 本质上可以理解为字典 to_dict()

  request.files      获取FormData中的文件数据, 是一个FileStorage对象 save(文件路径)

  request.values      获取请求体中的原始数据, byte类型

  request.path      获取当前访问路径

四. Flask的模板Jinja2

  {

{ 变量 }}

  {% 逻辑 %}

五. Flask的路由

  1. 创建路由的两种方式

from flask import Flaskapp = Flask(__name__)@app.route("/index")    # 第一种添加路由的方式def index():    return "This is index"app.add_url_rule("/index", view_func=index)if __name__ == "__main__":    app.run()
FBV
from flask import Flask, viewsapp = Flask(__name__)class Index(views.MethodView):    methods = []    decorators = []        def get(self):        return "get请求"    def post(self):        return "post请求"app.add_url_rule("/index", view_func=Index.as_view(name=""index))app.run()
CBV

  2. 路由的配置参数

    methods = [get, post]    允许执行视图函数的请求方式

    endpoint = "xxx"       路由Mapping, 类似别名, url_for(endpoint), 反向解析url地址

    strict_slashes=True       是否严格遵循路由匹配 - "/"结尾 默认值是 True 必须严格遵循

    defaults={"nid":3}         默认路由参数 - 视图函数中必须有一个nid(key)的形参接收

    redirect_to="/index"       永久重定向 301/?308 - 不进入试图函数处理,直接跳转

  3. 路由的动态参数

@app.route("/getImg/
/
")def get_img(path, filename): file_path = os.path.join(path, filename) return send_file(file_path)
带有参数的动态路由

六. Flask的配置

  1. Flask初始化配置

    app = Flask(__name__)

    template_folder="templates"    指定模板存放路径

    static_folder="static"         指定静态文件存放路径

    static_url_path=None          指定静态文件访问路径, 前端拼路径时用, 默认为 "/" + static_folder

    static_host=None         静态文件的存放服务器

  2. Flask对象配置

    app.default_config        默认配置, ImmutableDict类型

    app.config["DEBUG"] = True    配置DEBUG

    app.config.from_object(Obj)    从Obj类属性种导入

 

class Obj:        DEBUG = Turedefault_config = ImmutableDict({    'ENV':                                  None,    'DEBUG':                                None,    'TESTING':                              False,    'PROPAGATE_EXCEPTIONS':                 None,    'PRESERVE_CONTEXT_ON_EXCEPTION':        None,    'SECRET_KEY':                           None,    'PERMANENT_SESSION_LIFETIME':           timedelta(days=31),    'USE_X_SENDFILE':                       False,    'SERVER_NAME':                          None,    'APPLICATION_ROOT':                     '/',    'SESSION_COOKIE_NAME':                  'session',    'SESSION_COOKIE_DOMAIN':                None,    'SESSION_COOKIE_PATH':                  None,    'SESSION_COOKIE_HTTPONLY':              True,    'SESSION_COOKIE_SECURE':                False,    'SESSION_COOKIE_SAMESITE':              None,    'SESSION_REFRESH_EACH_REQUEST':         True,    'MAX_CONTENT_LENGTH':                   None,    'SEND_FILE_MAX_AGE_DEFAULT':            timedelta(hours=12),    'TRAP_BAD_REQUEST_ERRORS':              None,    'TRAP_HTTP_EXCEPTIONS':                 False,    'EXPLAIN_TEMPLATE_LOADING':             False,    'PREFERRED_URL_SCHEME':                 'http',    'JSON_AS_ASCII':                        True,    'JSON_SORT_KEYS':                       True,    'JSONIFY_PRETTYPRINT_REGULAR':          False,    'JSONIFY_MIMETYPE':                     'application/json',    'TEMPLATES_AUTO_RELOAD':                None,    'MAX_COOKIE_SIZE': 4093,})
自定义Obj类

 

七. Flask的蓝图

  蓝图Blueprint, 就是一个不能run的flask对象

  1. 创建蓝图

from flask import Blueprintbp = Blueprint("bp", __name__, url_prefix="/bp")@bp.route("/index")def index():    return "这是bp蓝图中的index"
Flask蓝图的创建

  2. 注册蓝图

    app.register_blueprint(pb)

 

八. Flask的特殊装饰器

  1. 三个特殊装饰器

    @app.before_request    执行视图函数之前, 所要装饰的函数

    @app.after_request     执行完视图函数之后, 发出响应之前, 索要装饰的函数

    @app.errorhandler(405)   重新定义错误返回信息, 只能定义错误状态码

  2. 执行顺序

    正常执行顺序: before_request1 => before_request2 => view_function => after_request2 => after_request1

    异常执行顺序: before_request1 => after_request2 => after_request1

  

转载于:https://www.cnblogs.com/q767498226/p/11095435.html

你可能感兴趣的文章