Pythonic检查参数的方法是一个整数,如果没有参数则设置默认值

时间:2017-07-21 06:47:24

标签: python python-3.x flask

我想在Flask应用中获取GET参数。我想检查一下这个参数是否为提交的整数。

  • 如果未提交,我想设置默认值。
  • 如果提交但无效,我想抛出错误

我想出了下面的代码,但对我来说似乎很丑陋和单调。这种方式最蟒蛇的方式是什么?

@app.route('/')
def index():
    page = request.args.get('page') or 0
    try:
        page = int(page)
    except:
        return abort(500)

2 个答案:

答案 0 :(得分:3)

您可以告诉rails installer测试您的类型,并设置默认值:

request.args.get()

如果类型转换失败,则使用默认值。在网络环境中,很多更好的想法,而不是提出500响应(保留给服务器错误,而不提供有效的页码是真的是客户端错误)。

None否则永远不会引发异常;如果没有设置其他默认值,则返回@app.route('/') def index(): page_str = request.args.get('page', default=0) try: page = int(page_str) except ValueError: abort(400) 。如果必须在类型转换方面有例外情况,那么您的方法就会受到影响,但我会返回request.args.get() method代替:

abort(...)

return引发了异常,无需在那里使用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) 。因为引发了异常,所以可以将整个4行的块作为单独的函数:

@app.route('/')
def index():
    page = convert_or_400(request.args.get('page', default=0), int)

现在路线变为:

{{1}}

答案 1 :(得分:-1)

def index():
    page = input("enter the value")
    try:
        if (page != ""):
            page = int(page)
        else:            
            page = 0
        print("Input value..",page)
    except:
        print("wrong value given.Input numeric value")       
index()

一种简单的方法