flask

https://www.cnblogs.com/DragonFire/tag/Flask%E5%AD%A6%E4%B9%A0/

一:初识flask
安装:pip install Flask
1. Django Web框架
    优点:大而全,Froms Admin model ......
    缺点:浪费资源

2. Flask Web框架
    优点:短小精悍,session(存放在cookies),三方组件强大
    缺点:运行稳定性较差,你还不会
    


三行代码:
from flask import Flask
app = Flask(__name__)
app.run()


六行视图函数
@app.route("/index") # 路由
def index(): # 视图函数
    return "Hello OldBoy EDU" # Django HttpResponse

    
二:response三剑客:    
httpresponse: return "hello" 
jsonify({k:v})

render_template : 
    先导入再 return 
    templates 是模板的默认存放路径

redirect:
    先导入再 return redirect("/login")

send_file():
    先导入再 return send_file(打开文件并返回)


    
三:flask中的request
request:
    args url地址当中的参数
    form POST请求体中的FormData中的数据
    values 获取所有参数(url,formdata)
    request.data content-type:jinwangbayinwangbabiwushangzanjiadelaowangba  b"{username:jinwangba}"
    request.json content-type:application/json 将数据序列化字典中
    request.files 获取Formdata中的文件
        jwbdf = request.files["jinwangbadefile"]
        jwbdf.save(jwbdf.filename)
    
    属性类的:
    method 请求方式
    url 完整地址
    host 前半段儿 http://111.111.111.111:5000/
    path 后半段儿 /login

四:flask中的模板语言 jinjia2及render_template
    Jinja2        
    {{  }}  非逻辑代码
    {%  %}    逻辑代码
    
七:flask中的路由系统
路由:
    methods=["POST","GET"]
    endpoint="反向url地址"
    url_for("反向url地址")
    defaults={"nid":10}
    动态路由参数/index/<int:arg>
                url_for("endpoint",arg=123)

八:对app的配置及实例化flask参数                
Flask的配置
    1.Flask实例化配置 app = Flask(__name__)
        static_folder = 'static',  # 静态文件目录的路径 默认当前项目中的static目录
        static_url_path = None,  # 静态文件目录的url路径 默认不写是与static_folder同名,远程静态文件时复用
        template_folder = 'templates'  # template模板目录, 默认当前项目中的 templates 目录
        
    1 app.config["DEBUG"] = True
    2 配置文件:settings.py    启动文件:app.config.from_object("settings.FlaskSetting")  
    2.Flask对象配置
        'SECRET_KEY': None,  # 之前遇到过,在启用Session的时候,一定要有它
        'SESSION_COOKIE_NAME': 'session',  # 在cookies中存放session加密字符串的名字
        'JSONIFY_MIMETYPE': 'application/json'
        
        class FlaskConfigDebug(object):
            DEBUG = True
            SECRET_KEY = "DragonFire"


        class FlaskConfigTesting(object):
            TESTING = True
            SECRET_KEY = "DragonFire"
        
        app.config.from_object(FlaskConfigDebug)
    


九:Flask蓝图(Blueprint)
    from flask import Blueprint       #s_view.py
    app.register_blueprint(s_view.sv) #manager.py 
    蓝图就是另一种形式的Flask实例
        detail_blueprint = Blueprint("serv",__name__, template_folder="serv_temp",
                             static_folder="serv_static",
                            static_url_path="/serv_static",url_prefix="/servs")

                            
    
十:Flask特殊装饰 (组件)
    @app.template_folder() 类偏函数的方法
    @app.template_global() 全局函数
    @app.errorhandler(405)
    def my_405(args)
    
    @app.before_request
    def be1():
        return None 是继续
        return not None 是中断 

    @app.after_request
    def af1(res):
        return res 
        
    # be1 - be2 - af2 - af1
    # be1 - af2 - af1
    
    
Flask中的session
    app.config["SECRET_KEY"] = "asdfasdfasdf"
    

    
Flask中的 CBV
    class Login(views.MethodView):
        def get(self):
            return render_template("template.html")

        def post(self):
            username = request.form.get("username")
            password = request.form.get("password")
            if username == "yinwangba" and password == "jinwangba":
                return "登录成功"

            return render_template("template.html",msg="登录失败滚吧")

    app.add_url_rule("/login",endpoint=None,view_func=Login.as_view(name="login"))
原文地址:https://www.cnblogs.com/xujinjin18/p/9874163.html