Я только начал использовать Pyramid для одного из моих проектов, и у меня есть случай, когда мне нужно проверить ввод поля формы, взяв это значение поля формы и сделав вызов веб-службы, чтобы утверждать правильность значения. Например, есть поле под названием КЛИЕНТ-ID вашего банка. Мне нужно взять это (отдельно) в качестве ввода и проверить на уровне сервера, сделав вызов веб-службы (например, http://someotherdomain/validate_customer_id/?customer_id=<input_value>
).Какой правильный подход для проверки формы? Проверка схемы Colander или подтверждение формы Deform?
Я использую Colander для управления схемой формы и Deform для всей логики проверки формы. Я смущен тем, где мне нужно разместить мою логику проверки для случая КЛИЕНТА-ИД. Является ли оно MySchema().bind(customer_id=<input_value>)
(у которого есть отложенный валидатор, который запрашивает веб-сервис) или что-то в form.validate (request.POST.items())? Если я возьму путь отложенного валидатора, то MySchema().bind
поднимет ошибку colander.Invalid
за неправильный идентификатор пользователя CUSTOMER. Хорошо. Но эта ошибка не на уровне формы, а на уровне схемы. Итак, как я могу сказать пользователю об этом разумным способом?
У меня есть хороший опыт работы с формами Django, поэтому я ожидал чего-то вроде clean
метода. Ошибка формы, например form ['customer_id']. Ошибка - это то, что я ожидаю на уровне шаблона. Возможно ли это с деформированием пирамиды или с дуршлагом?
Спасибо. Теперь его ясность понятна. Но если проверка схемы не удалась, как я могу сообщить об этом как ошибку формы? Как сообщать пользователю «Введен неверный CUSTOMER_ID»? Потому что они находятся на двух разных уровнях. –
Это очень хороший ответ. +1 –
@ None-da в экосистеме дуршлаг, сообщение, которое вы хотите изменить, определяется на уровне валидатора, то есть https://github.com/Pylons/colander/blob/master/colander/__init__.py#L314. Некоторые из них принимают «сообщение» kwarg, когда вы их создаете, а некоторые нет. – JayD3e