美文网首页
Flask Web 开发【 Chapter 2 】程序的基本结构

Flask Web 开发【 Chapter 2 】程序的基本结构

作者: 蜘蛛的梦呓 | 来源:发表于2018-04-25 20:26 被阅读0次

    第二章 程序的基本结构

    2.1 初始化

    索引的 Flask 程序都必须创建一个程序实例,经常使用下述代码创建:

    from flask import Flask
    app = Flask(__name__)
    

    Flask 类的构造函数只有一个必须指定的参数,即程序主模块或包的名字。在大多数程序中,Python 的 __name__变量就是所需的值。

    2.2 路由和视图函数

    1. 路由定义:处理 URL 和函数之间的关系的程序称之为路由。

    2. 最简便的路由声明():

      @app.rute('/')
      def index():
       return '<1>Hello</h1>'
      

      @app.rute('/') :修饰器,参数匹配的是域名。

      index():像这样的函数称之为视图函数,视图函数返回的响应的是页面显示的部分。

      app.route修饰器,把修饰的函数index()注册为路由,这样参数接收特定的 URL 与 修饰的视图函数直接就有了映射的关系。

      然而,一般的域名并不是静态的而是可变的,只需在 route 修饰器中使用特殊的语法即可。

      下例定义的路由中就有一部分是动态的域名:

      @app.rute('/user/name')
      def index():
       return '<1>Hello</h1>'
      

    2.3 启动服务

    使用 run 方法启动

    if __name__ == '__main__':
        app.run(debug=True)
    

    app.run() 函数的参数接收用于设置 Web 服务器的操作模式,要想启用调试模式,可以把 debug 设为 True。

    2.4 一个完整的程序

    hello.py

    from flask import Flask
    
    # 1.初始化 Flask 对象
    app = Flask(__name__)
    
    
    # 2. 设置路由和视图函数
    @app.route('/')
    def index():
        return '<h1>Hello World!<h1>'
    
    
    @app.route('/user/<name>')
    def user(name):
        return '<h1>Hello,%s!<h1>' % name
    
    
    # 3.启动服务
    if __name__ == '__main__':
        app.run(debug=True)
    
    

    虚拟环境在激活的状态下执行。

    2.5 请求 — 响应循环

    2.5.1 程序与上下文

    Flask 从客户端收到请求时,要让视图函数能访问一些对象,这样才能处理请求。

    要让视图函数能够访问请求对象,一个显而易见的方式是将其作为参数传入给视图函数,但是这样会导致程序中的每个视图函数都增加一个参数,为了避免大量的参数把视图函数弄的一团糟,Flask 使用上下文临时把某些对象变为全局可访问。

    from flask import request
    
    @app route('/')
    def index():
        user_agent = request.headers.get('User-Agent')
        return '</p>Your bbrowser is %s</p>' % user_agent
    

    注意在这个函数中我们如何把 request 当做全局变量使用,事实上,request 不可能成为全局变量(每个请求都不一样)。Flask 使用上下文让特定的变量在一个线程中全局可以访问,于此同时却不会干扰其他线程。

    2.5.2 响应

    1. 重定向

      这种响应没有页面文档,只告诉浏览器一个新地址用以加载新页面,常用 302 状态码表示,Flask 提供 redirect() 辅助函数,生成这种响应。

      from flask import redirect
      
      @app.route('/')
      def index():
       return redirect('http://baidu.com')
      
      

    2. abort 函数

      用于处理错误,抛出异常。

      from flask import abort
      
      @app.route('/user/<id>')
      def get_user(id):
       user = load_user(id)
       if not user:
           abort(404)
       reutrn '<h1>Hello,&s</h1>' % user.name
      

      注意,abort 不会把控制权交还给调用它的函数,而是抛出异常把控制权交给 Web 服务器。abort()函数就是我们在程序添加了这个方法了之后,如果程序发生了异常,这个程序将会中断异常的程序。

    第二章就到这里了,最近状态有点不好特别浮躁,我会尽快调整,每天多看多记录。
    码字不易,给个👍呗。

    相关文章

      网友评论

          本文标题:Flask Web 开发【 Chapter 2 】程序的基本结构

          本文链接:https://www.haomeiwen.com/subject/vysylftx.html