美文网首页
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