python flask 视图函数 响应(response)

ernestwang 1315 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 '登录'

标签: response python

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~

复制成功
微信号: irenyuwang
关注微信公众号,站长免费提供流量增长方案。
我知道了