Я создал простую форму HTML не используя models.Model в models.py, ModelForm в forms.py и Oldschool шаблонов Django (ничего фантазии)Джанго текст в результатах SmallIntegerField в KeyError
Если пользователь вводит текст в поле числа и отправляет форму, сервер возвращает KeyError
Примера: следующее поле «высота»:
class DataRegistryPart2(models.Model):
height = models.SmallIntegerField(blank=True, null=True)
будет отображаться как HTML ввод в шаблоне:
<input id="id_height" name="height" type="number">
Im используя пользовательскую проверку в forms.py:
...
def clean(self):
cleaned_data = super(CreatePatient, self).clean()
height = cleaned_data["height"] # <-- This is where the KeyError happens!
Если пользователь вводит текст или десятичных номер в поле ввода и отправляет форму HTML, Django возвращает исключение KeyError.
Как я могу предотвратить это (без использования try/catch).
Thanx!
Спасибо за ваш ответ! Похоже, что это действительно плохая идея использовать чистую функцию вообще - очень вероятно, что пользователь вводит недействительные данные в форму, которая разбивает систему. Возможно, я что-то не понимаю, но сейчас мне трудно увидеть использование чистой функции. Может быть, вы можете уточнить? – Vingtoft
Нет, не совсем. Как я уже сказал, это делается для проверки в более чем одной области; в этом случае вы можете использовать 'cleaned_data.get ('fieldname')' для доступа к потенциально отсутствующему значению без запуска KeyError. –
Благодарим вас за разъяснение. – Vingtoft