zoukankan      html  css  js  c++  java
  • Flask介绍及简单使用

    Flask

    Django是一个大而全的框架,Flask是一个轻量级的框架。

    区别:

    • Django内部集成了大量的组件;请求处理是逐一封装和传递;
    • Flask本身并没有太多的功能,但是第三方组件非常丰富;利用上下文管理来实现请求处理

    Flask的wsgi

    Flask框架依赖werkzeug wsgi,flask本身没有的wsgi。

    from werkzeug.serving import run_simple
    
    class Flask(object):
        
        def __call__(self,environ, start_response):
            return "xx"
        
        def run(self):
            run_simple('127.0.0.1', 5000, self)
            
    app = Flask()
    
    if __name__ == '__main__':
        app.run()
    

    Flask 的简单操作

    • Flask 路由:以装饰器的形式
    @app.route("/index")
    def index():
        data_dict = DATA_DIC
        return render_template("index.html",data_dict=data_dict)
    
    • Flask 默认允许的请求方式为get,接收其他请求需要设置:
    @app.route("/login",methods=["POST","GET"])  
    
    • Flask 别名设置,默认别名为函数名并且不能重名
    from flask import Flask,render_templaterequest,url_for
    
    app = Flask(__name__)
    @app.route("/index",endpoint="homepage")    # 设置别名
    def index():
        data_dict = DATA_DIC
        return render_template("index.html",data_dict=data_dict)
    
    @app.route("/edit")
    def edit():
        return redirect(url_for("homepage"))	# 使用别名
    
    • Flask 获取post请求的数据
    @app.route("/login",methods=["POST","GET"])     # 设置请求方式
    def login():
        user = request.form.get("user")		# 通过request.form获取post数据
        pwd = request.form.get("pwd")
        if user == "xxx" and pwd == "123":
            return redirect("/index/")
        error = "用户名或密码错误"
        return render_template("login.html",error=error)
    
    • Flask 获取get请求数据
    @app.route("/edit",methods=["POST","GET"])
    def edit():
        nid = request.args.get("nid")  # request.args获取get请求中的值
    
    • Flask 获取URL中的值
    # 请求URL:http://127.0.0.1:5000/edit?nid=2
    
    @app.route("/delete/<int:nid>")     # 接收数据,设置数据类型
    def delete(nid):
        del DATA_DIC[nid]
        return redirect(url_for("homepage"))
    
    • Flask 返回值
    return "xxx"      # 返回字符串
    return jsonify({"code":1000,"msg":"xxxx"})        # 返回json格式数据
    return render_template("login.html",xxx=a) 		# 返回模板,可以传参数
    return redirect("/index/") 或 redirect(url_for("homepage")) # 跳转到URL,或别名
    
  • 相关阅读:
    SP375 QTREE
    「2017 山东一轮集训 Day5」字符串 (后缀自动机, 拓扑排序)
    [SDOI2016]生成魔咒(后缀自动机)
    bzoj3252: 攻略(贪心)
    bzoj2961 共点圆 (CDQ分治, 凸包)
    [CTSC2012]熟悉的文章 (后缀自动机 单调队列)
    bzoj3622: 已经没有什么好害怕的了
    [SDOI2013]泉(容斥)
    [SHOI2012]信用卡凸包(计算几何)
    CF1139D Steps to One (莫比乌斯反演 期望dp)
  • 原文地址:https://www.cnblogs.com/os-linux/p/11907792.html
Copyright © 2011-2022 走看看