Python/FLASK - html 表单返回字符串。如何检查它是不是包含数字?

Posted

技术标签:

【中文标题】Python/FLASK - html 表单返回字符串。如何检查它是不是包含数字?【英文标题】:Python/FLASK - html form return strings. How check if it containt number?Python/FLASK - html 表单返回字符串。如何检查它是否包含数字? 【发布时间】:2017-12-18 21:56:56 【问题描述】:

我有非常简单的代码 - 我正在寻找更好的解决方案我的情况: 我有: - 2输入文字+提交按钮

输入表单总是以字符串形式返回文本。 您是否知道仅传递数值(并且对于非数字 - 显示“错误”)更好的解决方案(并且更短),除了收集列表中的所有字母并检查语句如果输入的文本不是在带有字母的列表中

from flask import Flask, render_template, request

app = Flask(__name__)

@app.route("/licz/", methods=['GET'])
def search():
    licz1 = request.args.get('liczba1')
    licz2 = request.args.get('liczba2')
    notnumbers = ['q','w','e','r','t','y']
    if licz1 and licz2 != None:

        if licz1 not in notnumbers:
            sumaliczenia = int(licz1) + int(licz2)
            return render_template('liczenie.html', suma=sumaliczenia)
        else:
            sumaliczenia = "error"
            return render_template('liczenie.html', suma=sumaliczenia)

    else:
        return render_template('liczenie.html')

app.run(debug=True)

模板代码(来自下面的评论):

<!DOCTYPE html>
  <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Formularz</title>
    </head>
    <body> Result is  suma 
      <form action="/licz/" method="get">
        <input type="text" name="liczba1">
        <input type="text" name="liczba2"> <button type="submit">Send</button> 
      </form>
    </body>
  </html>

【问题讨论】:

不,它不重复,因为输入文本总是返回字符串而不是 int。 据我所知,您有不同的选择:(1) 通过 HTML 使用 type="number",如 developer.mozilla.org/en-US/docs/Web/HTML/Element/input/number(您可以使用 CSS 隐藏输入元素内的箭头),(2) 转换使用 python 内部的 try/except 将数据转换为 int,(3) 使用正则表达式检测字符串内部的 int,(4) 将字符串的列表表示与所有数字的列表进行比较0...9 请提供模板代码。 模板代码: Formularz 结果是 suma
【参考方案1】:

您可以尝试将输入转换为 int。如果其中没有数值,Python 将引发 ValueError,您可以捕获并处理错误。

try:
    input1 = int(input1)
    input2 = int(input2)
except ValueError as e:
    # print error
else:
    # valid
    sum = input1 + input2

【讨论】:

以上是关于Python/FLASK - html 表单返回字符串。如何检查它是不是包含数字?的主要内容,如果未能解决你的问题,请参考以下文章

Python---Flask--03--Web表单

Python/Flask/HTML - 在新窗口而不是主页中呈现 HTML

python: flask返回的html标签被当成字符串

python flask 如何读取数据库数据并返回到html

前端与后端的数据交互(jquery ajax+python flask)

使用python flask做网页,使用了JS来做一个弹出登陆框,怎么获取到表单数据,