您的位置:首页 > 其它

第二章 程序的基本结构

2016-10-31 16:42 169 查看
2.1初始化

from flask import Flask
app = Flask(__name__)


2.2路由和视图函数

@app.route('/')
def index():
return '<p>Hello World<p>'


2.3启动服务器

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


2.4一个完整的程序

from flask import Flask
app = Flask(__name__)

@app.route('/')
def index():
return '<p>Hello World<p>'

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


执行该文件后,访问http://127.0.0.1:5000

2.5请求-响应循环

2.5.1 程序和请求上下文

//获取header信息
@app.route('/')
def index():
user_agent = request.headers.get('User-Agent')
return '<p>Your browser is %s<p>' % user_agent


2.5.2 请求调度

>>> app.url_map
Map([<Rule '/' (HEAD, OPTIONS, GET) -> index>,
<Rule '/static/<filename>' (HEAD, OPTIONS, GET) -> static>,
<Rule '/user/<name>' (HEAD, OPTIONS, GET) -> user>])


2.5.3 请求钩子

before_first_request 处理第一个请求之前运行

before_request 每次请求之前运行

after_request 如果没有异常抛出,每次请求之后运行

teardown_request 即使有异常抛出,也在请求之后运行

不详


2.5.4 响应

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


// 设置响应,响应时设置浏览器cookie
@app.route('/res')
def res():
response = make_response('<h1>This document carries a cookie!</h1>')
response.set_cookie('answer', '42')
return response


// 重定向链接
@app.route('/red')
def red():
return redirect('http://www.baidu.com')


// 不满足条件主动抛出404
app.route('/user_id/<user_id>')
def get_user(user_id):
re_user = load_user(user_id)
if not re_user:
abort(404)
return '<h1> hello, %s</h1>' % re_user

def load_user(user_id):
re_id = str(user_id)
re = {"1": "user_a", "2": "user_b"}
return re.get(re_id)


2.6 Flask扩展

安装扩展

(venv) $ pip install flask-script


导入扩展

from flask.ext.script import Manager
manager = Manager(app)

if __name__ == '__main__':
manager.run()


使用扩展

(venv) $ python hello.py runserver --help
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: