python flask 视图函数 响应(response)

    Python编程 wuya 266次浏览 已收录 0个评论

    flask应用

    • 视图函数(v)
      • 分类:无参路由,有参路由
        from flask import Flask
        from flask_script import Manager
        
        app = Flask(__name__)
        manager = Manager(app)
        #url组成部分 协议 主机 端口 文件 参数
        #无参路由,建议写上双斜线
        @app.route("/test/")
        def test():
            return "for test"
        #带参数的路由
        @app.route("/welcome/<name>/")
        def welcome (name):
            return "hello {}" .format(name)
        
        #带参数的路由,指定参数的类型
        @app.route("/user/<int:uid>/")
        def user(uid):
            return "欢迎{}号技师。。。。。。".format(uid)
        
        #带参数的路由 ,path类型
        @app.route("/path/<path:pa>/")
        def path(pa):
            return pa
        if __name__ == "__main__":
            manager.run()
      • 说明:
        • 路由的末尾建议加上/,为了防止以后在后面出现斜线出现错误
        • 路由的写法,如果需要去指指定参数的话,参数应该写在<>中
        • 常用的类型有:int/float/path,默认的为字符串
        • path路径还是一个字符串,只不过是/作为了一个特殊字符
    • 请求(request)(重要)学属性
      @app.route("/request/")
      def req():
          #当前请求的完整的url地址
          #return request.url
          #不包含get参数的
          #return request.base_url
          #只包含主机和端口号
          #return request.host_url
          #只包含装饰器中的地址
          #return request.path
          #请求的方式get,post两种
          #return request.method
          #远程客户端的ip地址
          #return request.remote_addr
          #所有的get参数的值都放在了 args里面
          #print(request.args)
          #return request.args["username"]
          #请求头信息
          print(request.headers)
          return request.headers["User-Agent"]
      
    • 响应(response)
    @app.route("/response/")
    def response():
        #直接返回字符串的响应
        #return "ok"
        #返回的时候顺便指定状态码
        # return "page not found", 404
        resp = make_response("我是创建的响应", 404)
        #设置响应头
        resp.headers["uid"] = 250
        return resp
    • 重定向(redirect)
    • from flask_script import Manager
      from flask import Flask, redirect, url_for
      
      app = Flask(__name__)
      manager = Manager(app)

    @app.route(‘/redirect/’) def old():

      # return '原来的内容'
      # 重定向到新的路由
      # 硬编码
      # return redirect('/new/')
    
      # 反转函数url_for():根据视图函数的名字,反向构造路由地址
      # return的结果是/new/
      # return url_for('new')
    
      # 构造无参路由
      # return redirect(url_for('new'))
    
      # 构造带参数路由
      # return redirect(url_for('welcome', username='ergou'))
    
      # 构造完整路由地址,带协议和端口号
      return url_for('new', _external=True)

    @app.route(‘/welcome/<username>/’) def welcome(username):

      return '我是{}'.format(username)

    @app.route(‘/new/’) def new():

      return '这是新的内容'

    if name == ‘main‘:

      manager.run()
    
      - 终止及错误定制
    
      ```python 
      from flask import Flask, abort, redirect
      from flask_script import Manager
    
    
      app = Flask(__name__)
      manager = Manager(app)
    
    
      @app.route('/abort/')
      def err():
          # 终止代码执行的对象,其实就是想系统抛出一个异常
          # 系统捕捉到异常之后,进行处理
          abort(404)
          return '嘻嘻,东东'
    
    
      # 定制错误页面
      @app.errorhandler(404)
      def page(e):
          print(e)
          return '页面走丢了,请稍后再试...'
          # return redirect('http://www.baidu.com')
    
    
      if __name__ == '__main__':
          manager.run()
    • 蓝本(Blueprint)
      • 大量的视图放在同一个文件中,显然是不合适的,最佳的方案是使用蓝本

    创建蓝本:

      from flask import Blueprint
      '''
      1、导入蓝本
      2、创建蓝本对象
      3、注册蓝本
      '''
    
      user = Blueprint('user', __name__)
    
    
      @user.route('/login/')
      def login():
          return '登录'

    学海无涯 , 版权所有丨如未注明 , 均为原创丨转载请注明python flask 视图函数 响应(response)
    喜欢 (0)
    发表我的评论
    取消评论
    表情 加粗 删除线 居中 斜体 签到

    Hi,您需要填写昵称和邮箱!

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址