Flask基础

python四大框架的比较

  Django web框架:

    优点:组件非常全,教科书式的框架

    缺点:资源浪费,因为组件多,大,还是相互关联的,随便卸载组件,可能会导致出现一些小问题

  Flask web框架:

    优点:扩展性强,精简小,简单

    缺点:稳定性较差,第三方组件新版本兼容性

  Tornado web框架:

    优点:异步io,非阻塞,原生WebSocket

    缺点:全部手写,很麻烦

  Sanic web框架:

    优点:异步框架,结合了Torando和Flask的所有优点

    缺点:复杂程度比较高,不太容易上手

Flask的三行启动

1 from flask import Flask
2 
3 app = Flask(__name__)
4 
5 app.run()
Flask的启动

Flask的带路由和视图启动

 1 from flask import Flask
 2 
 3 app = Flask(__name__)
 4 
 5 app.route("/")
 6 def index():
 7     return "hello,Flask"
 8 
 9 
10 app.run()
带路由和视图启动

Flask的请求 request

  request.args   ---->> 接受的是url中的参数,获取到的是一个字典

  request.form   ---->> 接受的是formdata  获取到的是一个字典

  request.files   ----->> 接受的文件    接受到之后要记得保存(save(带名参数的地址))

  request.data   ----->> 存放的是请求体中的原始信息

  request.json   ---->>请求头中存在的Content-type:application/json 请求体中的数据存放在session中

Flask框架的返回值

  return  " hell"   返回的是一个字符串

  return render_template("login.html)  返回的是一个模版

  return redirect("/)  返回的是一个链接地址

  return send_file("文件名字) 打开并且返回内容,自动识别文件类型,并且加入到Content-type:文件类型

  return jsonify(一般是字典)  返回标准格式的json字符串

Flask Jinja2

  {{}} 引用 执行 非逻辑代码

  {%%} 逻辑代码,引用变量

  Markup 安全字符串

  @app.template_global()  全局函数

  {% macro func() %}

​   {% endmacro %}

Flask Session

  将session这个字典,通过secret_key 序列化 存放在浏览器中的cokies中

Flask的路由详情

  methods = []  #列表中写的是请求方式

  endpoint = 反向地址字符串 默认值试图函数名   获取的时候 url_for()

  srrict_slashes 是否严格遵循路由地址结尾 "/"

  defaults = {"nid":1} 默认值参数

  redicret_to =  "一个地址"  #返回的状态码是301  永久重定向

Flask 实例化配置

  template_forder = "存放模版文件的文件夹名"  #指定模版存放默认路径 默认值:templates

  static_forder = "  "  #指定静态文件存放的路径 

  static_url_path = " " #指定静态文件的访问路径

  static_host = ""  #  远程静态文件存放服务器

Flask 蓝图

什么是蓝图: Blueprint  一个不能够被run的Flask实例

创建一个蓝图:  

from flask import Blueprint

user = Blueprint("user",__name__,template_foeder="模版地址",url_prefix="访问地址的前缀")
 
 @user.route("/")
 def index():
    pass

  

蓝图的注册:

  import 蓝图的名字

  app.register_blueprint(蓝图的名字)

Flask的特殊装饰器

重定义错误信息:

  @app.errorhandler(404):

  def error(a):

    return "你要返回的页面或者...."

  @app.before_request:     #请求进入函数之前  进入此函数

  def be1():

    你要执行的操作

    return

  @app.after_request:   #响应返回客户端之前 请求函数结束之后

  def af1():

    你要执行的操作

    return

Flask的CBV

 1 from flask import viesw
 2 
 3 class Login(views.MethodView):
 4     
 5     def get():
 6         pass
 7     def post():
 8         pass
 9 
10 
11 app.add_url_rule("/login",endpoint=None,view_func=Login.as_view(name="login))
Flask中的cbv  
原文地址:https://www.cnblogs.com/xinjie123/p/10588027.html