zoukankan      html  css  js  c++  java
  • Flask之初识

    Flask初识

      1.和几种框架的对比 

      Django :
        优点:大 组件全 session models
        缺点:所有资源全部加载,造成资源上一定的浪费

      Flask :
        优点:小 短小精悍 session 三方组件多太多了
        缺点:稳定性相对而言较差

      Tornado:
        优点 :异步 IO 非阻塞 原生Websocket

      2.由于之前已经学习过Django,所以Flask可基于Django框架学习

        2.1 安装  pip install flask

        2.2 启动flask:

          from flask import Flask
          app = Flask(__name__)
          app.run("0.0.0.0",5000,debug=True)

        2.3 flask的路由

          @app.route("/home",methods=["GET","POST"])

        2.4 Response三剑客 + 小儿子:

          return "hello s13 students"                           # Django HttpResponse 返回字符串
          return render_template("index.html")           # 返回模板
          return redirect("/index")                                # 重定向跳转
          小儿子
          return send_file("2.mp3")                             # 打开文件并返回客户端
          return jsonify({"name":"yinwangba"})           # 返回标准的json格式字符串 content-type: application/json

        2.5 Request:

          # print(request.form)           # form   存放form表单中的序列化数据
          # print(request.args)           # args    存放URL中的序列化数据
          # print(request.values)          # values   存放URL和form表单中的序列化数据
          # print(request.method)                # method    存放请求方式
          # print(request.path)           # path   路由地址
          # print(request.url)              # url      请求全部地址 http://127.0.0.1:5000/home?id=jwb&username=ywb
          # print(request.host)           # host         主机位 127.0.0.1:5000
          # print(request.host_url)          # host_url   将主机位转成url http://127.0.0.1:5000/
          # print(request.data)           # data         当请求头content-type无法被识别时
          # print(request.json)           # json         当请求头content-type:application/json
          # print(request.headers)          # headers  查看请求头
          # print(request.files.get("file"))         # files         获取文件对象
          # file = request.files.get("file")
          # file.save(file.filename)

        2.6 Jinja2:

          a.模板

          {{}} 引用变量 非逻辑代码时使用
          {%%} 逻辑代码使用

          b.返回安全字符
          | safe
          Markup : from flask import Markup 后台返回安全标签字符串

          c.模板继承
          {% block jj2 %}
          {% include "login.html" %}
          d.宏的概念
          {% macro func(name,type_name) %}
          <input type="{{ type_name }}" name="{{ name }}">
          <input type="submit" value="提交文件">
          {% endmacro %}
          {{ func("file","file") }}

        2.7 Flask中的Session组件:

          from flask import session
          app.secret_key = "OldBoyEdu.com"
          session被序列化后存放在 浏览器的cookie中

        2.8 特殊装饰器:

          @app.template_global()
          def a_and_b(a,b):
          return a+b

          @app.template_filter()
          def abc(a,b,c):
          return a+b+c

  • 相关阅读:
    vue.extend 拓展
    leetcode-166-分数到小数(用余数判断有没有出现小数的循环体)
    leetcode-165-比较版本号
    leetcode-162-寻找峰值
    vector.clear()不能用来清零
    leetcode-209-长度最小的子数组
    leetcode-201-数字范围按位与
    完全多部图的判断(个人思考)
    leetcode-200-岛屿的个数(dfs找所有的连通分量)
    leetcode-151-翻转字符串里的单词
  • 原文地址:https://www.cnblogs.com/wdbgqq/p/9985937.html
Copyright © 2011-2022 走看看