你可以告诉request.args.get()
method来测试你的类型,并设置默认:
@app.route('/')
def index():
page = request.args.get('page', type=int, default=0)
如果类型转换失败,则使用默认值。在一个网络环境,这是一个很好的想法比提出一个500响应(这是保留的服务器错误,虽然没有提供有效的页码是一个真正的客户端错误)。
request.args.get()
否则永不发生异常;如果没有设置其他默认值,则返回None
。如果您必须对类型转换的异常,你被卡住你的方法,但我会返回一个400 Bad Request error code代替:
@app.route('/')
def index():
page_str = request.args.get('page', default=0)
try:
page = int(page_str)
except ValueError:
abort(400)
abort(...)
抛出一个异常,没有必要使用return
那里。由于将引发异常,你可以做的4号线是整个块单独的函数:
def convert_or_400(value, type):
"""Convert a value to the given type, or raise a 400 client error"""
try:
return type(value)
except ValueError:
abort(400)
现在的路由变为:
@app.route('/')
def index():
page = convert_or_400(request.args.get('page', default=0), int)
注意' abort()'引发一个异常,'return'语句本身永远不会到达。 –