• Flask05--视图,请求,响应


    1视图

    1.1 函数FBV
    @app.route和app.add_url_rule参数:
    rule, URL规则
    view_func, 视图函数名称
    defaults = None, 默认值, 当URL中无参数,函数需要参数时,使用defaults = {'k': 'v'}
    为函数提供参数
    endpoint = None, 名称,用于反向生成URL,即: url_for('名称')
    methods = None, 允许的请求方式,如:["GET", "POST"]
    #对URL最后的 / 符号是否严格要求,默认严格,False,就是不严格
    strict_slashes = None
        '''
            @app.route('/index', strict_slashes=False)
            #访问http://www.xx.com/index/ 或http://www.xx.com/index均可
            @app.route('/index', strict_slashes=True)
            #仅访问http://www.xx.com/index
        '''
    #重定向到指定地址
    redirect_to = None, 
        '''
            @app.route('/index/<int:nid>', redirect_to='/home/<nid>')
        '''
    

    1.2 类CBV

    from flask import Flask,request,render_template,redirect
    from flask import views
    
    app=Flask(__name__)
    
    def auth(func):
        def inner(*args, **kwargs):
            print('before')
            result = func(*args, **kwargs)
            print('after')
            return result
    
        return inner
    class IndexView(views.MethodView):
        methods = ['GET']  # 指定运行的请求方法
        # 登录认证装饰器加在哪?
        decorators = [auth, ]  #加多个就是从上往下的效果
        def get(self):
            print('xxxxx')
            return "我是get请求"
        def post(self):
           return '我是post请求'
    
    # 路由如何注册?
    # IndexView.as_view('index'),必须传name
    app.add_url_rule('/index',view_func=IndexView.as_view('index'))
    
    if __name__ == '__main__':
        app.run()
    # 用的比较少
    # 继承views.MethodView,只需要写get,post,delete方法
    # 如果加装饰器decorators = [auth, ]
    # 允许的请求方法methods = ['GET'] 
    

    2 请求

    # request.method  提交的方法
        # request.args  get请求提及的数据   {name:adad,age:123}形式
        # request.form   post请求提交的数据 
        # request.values  post和get提交的数据总和
        # request.cookies  客户端所带的cookie  
        # request.headers  请求头
        # request.path     不带域名,请求路径   
        # # request.full_path  不带域名,带参数的请求路径   
        # request.url           带域名带参数的请求路径
        # request.base_url		带域名请求路径
        # request.url_root      域名
        # request.host_url		域名
        # request.host			127.0.0.1:500
        # request.files
    

    3 响应

      # 响应对象
        # 响应相关信息
        # return "字符串"
        # return render_template('html模板路径',**{})
        # return redirect('/index.html')
        # 对着django,JsonResponse
        # return jsonify({'k1':'v1'})
        aa='hello world'
        res=make_response(aa)
        res.set_cookie('xxx','lqz')
        # 往响应头中放东西
        res.headers['X-Something'] = 'A value'
        print(type(res))
        from  flask.wrappers import Response
        return res
        # response = make_response(render_template('index.html'))
        # response是flask.wrappers.Response类型
        # response.delete_cookie('key')
        # response.set_cookie('key', 'value')
        # response.headers['X-Something'] = 'A value'
        # return response
        # return 'hello'
    
    永远不要高估自己
  • 相关阅读:
    [SDOI2008]递归数列
    [SCOI2008]奖励关
    [SCOI2010]幸运数字
    [ZJOI2007]矩阵游戏
    [HAOI2006]旅行
    [ZJOI2008]泡泡堂
    [BZOJ1800][Ahoi2009]fly 飞行棋
    [POJ2288]Islands and Bridges
    [LUOGU] 3959 宝藏
    [BZOJ]1029: [JSOI2007]建筑抢修
  • 原文地址:https://www.cnblogs.com/liqiangwei/p/14408680.html
Copyright © 2020-2023  润新知