zoukankan      html  css  js  c++  java
  • Flask技术问题汇总

    1:Flask 使用 request对象代理了当前请求的上下文。这么做什么好处和坏处?

    好处:flask封装了C端发起request对象,这样就可以使用上下文临时把某些对象变为全局可访问;如果不封装,视图函数就要传入request对象,这时候视图函数要是还要访问其他对象,会把视图函数弄得一团糟,

    坏处:增加了理解的难度。虽然用起来很爽。但是request是怎么来的,传递过程,代理什么的。

    2:Flask 的核心特性封装的request对象,做了什么事?

    3,before_requests钩子和before_app_requests钩子的区别?

    使用蓝图时,before_requests / after_requests 钩子只能控制蓝图内路由,如果是控制全局内的路由,要用before_app_requests

    4,如何在多个环境执行单元测试?

    多环境单元测试的解决思路:延迟程序实例的创建,这样就可以创建多个程序实例

    操作:在app路径下的__init__.py文件里的工厂函数去实例化app对象

    5,Flask的路由是怎么实现的?

    使用时我们都知道的方式是:URL-> viewfunction

    其实Flask还有一件事就会中间加入了端点endpoint,也就是 URL -> endpoint -> viewfunction

    endpoint是处理单元的idid映射到view函数,flask在收到request时候,会去endpoint里找viewfunction注册的id

    6,Flask_login是怎么使用的?

    flask_login的使用步骤:

    1,初始化flask_login,设置seesion的保护等级,设置登录路由的endpoint

    2,实现一个user回调,也就是怎么获得userid

    3,在需要先登录的view函数,加上装饰器login_required

    7,Flask_login为什么要用user_loader?

    源码里说:

    Reason to let YOU define this self.user_callback:    Because we won't know how/where you will load you user object.

    flask_login无法知道在哪里加载用户对象,也就是flask_login无法知道要访问数据库哪一个表,无法知道在哪里加载userid就无法在模型里对user标记为已登录,所以需要用回调来确认加载哪个table哪个字段

    具体解释:https://segmentfault.com/q/1010000010253582

  • 相关阅读:
    HDU4465 Candy
    《有关概率和期望问题的研究》读书笔记(完成度:40%)
    HDU5583 Kingdom of Black and White
    Gym100548F Color
    HDU6035 Colorful Tree
    Echarts笔记
    springMVC
    Struts2
    SSH框架学习中遇到的问题
    I/O流
  • 原文地址:https://www.cnblogs.com/1fengchen1/p/10271432.html
Copyright © 2011-2022 走看看