0
我已經創造了forms.py和老校友Django模板中使用models.py models.Model,的ModelForm(沒有任何幻想)Django的文本SmallIntegerField導致KeyError異常
如果用戶輸入文本在一個簡單的HTML表單數字字段和提交表單,服務器返回一個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