2017-12-18 20 views
0

나는 아주 간단한 코드가 - 임은 더 나은 솔루션 내 경우를 찾고 : 내가 가진 : - 2 입력 텍스트 + 버튼Python/FLASK - html 형식의 문자열을 반환합니다. 번호가 포함되어 있는지 확인하는 방법은 무엇입니까?

입력 양식을 제출 항상 문자열로 텍스트를 반환합니다. 은 숫자가 (및 숫자가 아닌 경우 - "오류"표시)을 전달하고, 입력의 텍스트가 인 목록에없는 경우 목록의 모든 문자를 수집하고 확인 문 을 전달하는 더 좋은 해결책을 알고 있습니까?

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) 

템플릿 코드 (아래 주석에서) : 당신은 그냥 int로 사용자의 입력을 캐스팅해야 할 수

<!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> 
+0

아니요, 입력 텍스트가 항상 int가 아닌 int를 반환하기 때문에 중복되지 않습니다. – Kris

+0

내가보기에 다른 옵션이 있습니다 : (1) https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/처럼'type = "number"를 사용하는 HTML을 통해 숫자 (CSS를 사용하여 입력 요소 안의 화살표를 숨길 수 있음), (2) 파이썬 안에서 try/except를 사용하여 데이터를 int로 변환, (3) 정규 표현식을 사용하여 문자열 내부에서 int를 검색, 모든 숫자 목록'0 ... 9' – albert

+0

템플릿 코드를 제공해주십시오. – albert

답변

0

. 거기에 숫자 값이 없다면 Python은 ValueError를 발생시킵니다.이 값을 잡아서 오류를 처리 할 수 ​​있습니다.

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