zoukankan      html  css  js  c++  java
  • flask入门

    一 Python现阶段三大主流框架Django Tornado  Flask之间的区别

    1 Django主要的特点是大而全,集成了 很多的组件,例如:Models Admin Form等,缺点是浪费资源

    2 Torado 主要的特点是原生异步非阻塞,在IO密集型应用和多任务处理上占绝对性的优势

    3 Flask主要的特点是小而精,第三方组件特别全,就是稳定性相对而言较差

    而他们的应用也是大有不同的

    Django通常用于大型WEB应用 由于内置组件足够强大 所以使用Django开大可以一气呵成

    Torado通常用于API后端的应用,游戏服务后台,其内部实现的异步非阻塞很稳

    Flask通常应用于小型的应用和快速构建应用,其强大的第三方库,能够支撑一个大型的web应用

    二 Flask的安装

    pip install Flask
    

     实现一个简单的flask页面

    第一个页面
    from flask import Flask app = Flask(__name__) app.run()

    第二个页面
    from flask import Flask
    app=FlasK(__name__)
    def index():
    return 'Hello World'
    app.run()

    三 Flask的三剑客

    1 Response
    相当于Django当中的HttpResponse
    
    
    from flask import Flask
    app = Flask(__name__)
    
    
    @app.route("/index")
    def index():
        return "123"   #返回字符串至客户端
    
    
    2 render_template(相当于django中的render)
    
    from flask import render_template
    app = Flask(__name__)
    
    @app.route('/index')
    def index():
          return render_template("login.html")  #templates中的模板页面
    
    
    3  redirect  #重定向
    from flask import redirect
    
    app = Flask(__name__)
    
    @app.route('/index')
    def index():
       return redirect("/login") # 302
    

     四 Flask中的两个小儿子

    1.from flask import jsonify
    retrun jsonify({name:111}) # 返回json标准的字符串 
    原理是:Content-Type:application/json
    
    2.from flask import send_file
    return send_file(path)
    # 打开文件并返回文件内容(自动识别文件格式)
    

     五 falsk中的request

    flask中的request是一个全局的
    
    from flask import request
    request.method # 请求方式
    request.form # 存放FormData中的数据 to_dict 序列化成字典
    request.args # 获取URL中的数据 to_dict 序列化成字典
    request.url # 访问的完整路径
    request.path # 路由地址
    request.host # 主机地址
    request.values # 获取 FormData and URL中的数据 不要用to_dict
    request.json  # 如果提交时请求头中的Content-Type:application/json 字典操作
    request.data  # 如果提交时请求头中的Content-Type 无法被识别 将请求体中的原始数据存放 byte
    request.cookies # 获取Cookie中的数据
    request.headers # 获取请求头
    request.files # 序列化文件存储 save()
    

     六 Jinja2中的比较重要的几个

    1 注意:
    {{}}引用变量 执行函数
    {%%} 逻辑代码
    
    2 Markup 安全标签的字符串  相当于django当中的safe
    from flask import Flask,Markup
    
    tag = "<input type='text' name='username'>"   #在Markup中会熏染成真正的input标签
    tag = Markup(tag)
    
    把tag传到html中熏染  {{tag}}
    
    
    
    
    3 template_global(全局都可以使用)与template_filter(过滤器)
    from flask import Flask
    
    app = Flask(__name__)
    @app.template_global()
    def func(a,b):
        return a+b
    
    @app.template_filter()
    def fil(a,b,c):
        print(a)
        return a+b+c
    app.run(debug=True)   #当加入debug=True时,代码修改后会自动执行 不用主动执行
    
    
    
    前端中使用  
     {{ func(5,5) }}
      {{ 10 | fil(2,3) }}
    

     八 Flask中的session

    注意 session与request一样 都是全局的 都需要从flask 中导入
    from flask import Flask,session
    app = Flask(__name__)
    app.secret_key = "DragonFire"  # "加密字符串" 这个加密字符串可自行定义 # 用于序列化和反序列化 session信息  
    
    @app.route("/")
    def index():
        if not session.get("user"):
            return redirect("/login")
        return render_template("index.html")
    
    
    @app.route("/login", methods=["POST", "GET"])
    def login():
        if request.method == "GET":
            return render_template("login.html")
    
        if request.form.get("username") == "alex" and request.form.get("password") == "DSB":
            session["user"] = request.form.get("username") + "先帝创业未半而中道崩殂"
            return redirect("/")
    
    # Flask-Session
    app.run(debug=True)
    
    
    
    
    
    
    #注意
    由于Flask中默认Session 存放位置 - 客户端的Cookies中
    所以Session需要加密 用到 secret_key
    请求进入视图函数 带上cookie 将Session从cookie序列化出来 通过secret_key 反序列化成字典
    Flask-Session
    
  • 相关阅读:
    lnmp分离及其迁移数之一---数据库迁移
    lnmp wordpress...
    LNMP安装
    rpm 强制卸载
    ss ifconfig工具
    nginx--日志
    nginx--模块2--基于用户
    python-网络编程
    基本数据之-字典
    Python【day 9】函数入门1
  • 原文地址:https://www.cnblogs.com/mlhz/p/10252432.html
Copyright © 2011-2022 走看看