码迷,mamicode.com
首页 > 其他好文 > 详细

Flask学习之一——程序的基本结构

时间:2015-05-21 06:32:54      阅读:113      评论:0      收藏:0      [点我收藏+]

标签:

1. 初始化

所有flask程序都必须创建一个程序实例(application instance)

from flask import Flask
app = Flask(__name__)

 

 

2. 路由和视图函数

处理URL和函数之间关系的程序称为路由。
在Flask中定义定义路由最简单的方式,是使用程序实例提供的app.route修饰器,把修饰的函数注册为路由。

@app.route(/)
def index():
    return <h1>Hello World!</h1>

 像index这样的函数即称为视图函数(view function)

 

flask支持动态URL

@app.route(/user/<name>)
def user(name):
    return <h1>Hello, %s</h1> % name

路由中的动态部分默认使用字符串, 但flask支持在路由中使用int, float和path类型
如路由 /user/<int:id>只会匹配动态片段 id 为整数的 URL

 

 

3. 启动服务器

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

 

 

4. 请求-响应

请求
视图函数经常需要处理请求,这样就要传入请求对象参数。
为了避免大量参数把视图函数搞得一团糟, flask使用上下文临时把某些对象变为全局可访问。

from flask import request
@app.route(/)
def index():
    user_agent = request.headers.get(User-Agent)
    return <p>Your browser is %s</p> % user_agent
变量名 上下文 说明
current_app 程序上下文 当前激活程序的程序实例
g 程序上下文 处理请求时用作临时存储的对象。每次请求都会重设这个变量
request 请求上下文 请求对象,封装了客户端发出的 HTTP 请求中的内容
session 请求上下文 用户会话,用于存储请求之间需要“记住”的值的词典

 

响应

视图函数返回的响应可以把状态码作为第二个参数, 把首部组成的字典作为第三个参数

@app.route(/)
def index():
    return <h1>Bad Request</h1>, 400 

 

flask视图函数还可以返回Response对象(往往用于需要在响应对象上调用各种方法, 进一步设置响应)

from flask import make_response
@app.route(/)
def index():
    response = make_response(<h1>This document carries a cookie!</h1>)
    response.set_cookie(answer, 42)
    return response

 

重定向

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

 

abort (用于处理错误)

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

 

 

5. flask运用扩展

from flask.ext.script import Manager
from flask.ext.bootstrap import Bootstrap
manage = Manager(app)
bootstrap = Bootstrap(app)

大多数扩展都是像这样把程序实例作为参数传给构造函数, 初始化主类的实例

 

  

 2015-05-21

Flask学习之一——程序的基本结构

标签:

原文地址:http://www.cnblogs.com/whuyt/p/4518619.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!