Класс проверки параметров Python в колбе - PullRequest
0 голосов
/ 17 декабря 2018

Я пишу приложение Flask и хочу запустить проверки правильности некоторых полей, и только если вставленное значение в поле является целым числом или Нет для продолжения запроса POST.

Поле можетсодержат только целые числа или None, и если поле равно None, его следует заменить на 0.

Это мой код:

class Validation():
    def __init__(self, param, param_name):
        self.param = param
        self.param_name = param_name
    def check_int(param):
        try:
            int(param)
            return True
        except ValueError:
            return False

    def check(param, param_name):
        param = param.strip()
        if param == "":
            return 0
        elif Validation.check_int(param):
            return param
        else:
            flash(f"The {param_name} must be an integer!")
            exit()

Проблема заключается в том, что если поле содержиткакая-то строка вызовет функцию exit(), и моя программа просто остановится.Я просто хочу высветить сообщение о том, что это поле должно быть целым числом на экране без выполнения запроса POST в моем views.py файле:

if request.method == "POST":
    Validation.check(test1, "Test 1 Parameter")
    Validation.check(test2, "Test 2 Parameter")
    Validation.check(test3, "Test 3 Parameter")
    return render_template('test.html', form = form)

[РЕДАКТИРОВАТЬ]: На веб-странице у меня есть: *Поля 1015 *, test2 и test3, а также кнопка отправки.Поля теста определены в файле forms.py как TextField и могут быть либо пустыми, либо иметь целое число в качестве значения.Если пользователь вводит число с плавающей запятой или строку, на экране должно отображаться сообщение о том, что ввод недействителен, и после нажатия кнопки «Отправить» запрос на публикацию не должен выполняться.

1 Ответ

0 голосов
/ 17 декабря 2018
class Validation():

    def check_int(self,param):
        return param.isdigit()

    def check(self, param, param_name):
        param = param.strip()
        if param == "":
            return 0
        elif Validation.check_int(param):
            return param
        else:
            flash(f"The {param_name} must be an integer!")
            return False

views.py:

if request.method == "POST":
    test1 = Validation.check(test1, "Test 1 Parameter")
    test2 = Validation.check(test2, "Test 2 Parameter")
    test3 = Validation.check(test3, "Test 3 Parameter")
    if test1 is not False and test2 is not False and test3 is not False:
        return render_template('test.html', form = form)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...