第2章程序的基本结构


  
  

2.1初始化
使用如下代码创建一个程序实例:
from flask import Flask
app = Flask(__name__)
2.2路由和视图函数
用程序实例提供的app。route修饰器把修饰的函数注册为路由:
@app.route('/')
def index():
return '<h1>Hello World!</h1>'
称index()为视图函数,其返回的响应可以是包含HTML的简单字符串,也可以是复杂的表单。但一般不在Python代码中嵌入响应字符串,因为会导致代码难以维护。
支持动态名字的路由:
@app.route('/user/<name>')
def user(name):
return '<h1>Hello, %s!<h1>' % name
路由中的动态部分默认使用字符串,不过也可以使用类型定义,支持使用int、float和path类型。如:
路由/user/<int:id>只会匹配动态片段id为整数的URL。
2.3启动服务器
if __name__ == '__main__':
app.run(debug=True) //debug=True是启用调试模式。
2.4一个完整的程序
先在flasky文件夹下建立hello.py,内容如下:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return '<h1>Hello World!</h1>'
if __name__ == '__main__':
app.run(debug=True)
再用python hello.py运行程序,再打开浏览器,输入http://127.0.0.1:5000


    
    
示例2-2包含动态路由的Flask程序
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return '<h1>Hello World!</h1>'
@app.route('/user/<name>')
def user(name):
return '<h1>Hello, %s!</h1>' % name
if __name__ == '__main__':
app.run(debug=True)
2.5请求-响应循环
2.5.1程序和请求上下文
其实没搞懂
2.5.2请求调度
2.5.3请求钩子
#搞不懂
Flask 支持以下 4 种钩子:
before_first_request:注册一个函数,在处理第一个请求之前运行。
before_request :注册一个函数,在每次请求之前运行。
after_request :注册一个函数,如果没有未处理的异常抛出,在每次请求之后运行。
teardown_request :注册一个函数,即使有未处理的异常抛出,也在每次请求之后运行。
2.5.4响应
#继续搞不懂
HTTP 响应中一个很重要的部分是状态码,Flask 默认设为 200,这个代码表明请求已经被成功处理。
如果视图函数返回的响应需要使用不同的状态码,那么可以把数字代码作为第二个返回值,添加到响应文本之后。例如,下述视图函数返回一个 400 状态码,表示请求无效:
@app.route('/')
def index():
return '<h1>Bad Request</h1>', 400
make_response() 函数可接受 1 个、2 个或 3 个参数(和视图函数的返回值一样),并返回一个 Response 对象。
2.6Flask扩展
使用Flask-Script支持命令行选项
用quit()回到虚拟环境。
pip install flask-script
示例2-3
from flask.ext.script import Manager
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return '<h1>Hello World!</h1>'
@app.route('/user/<name>')
def user(name):
return '<h1>Hello, %s!</h1>' % name
manager = Manager(app)
if __name__ == '__main__':
manager.run()
运行后:
提示 from flask.ext.script import Manager 已过时,修改为from flask_script import Manager

    
    
运行后如图:
用host参数,本机内网ip为192.168.0.103,手机ip192.168.0.100。手机可以成功访问:


  
  
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值