Форма Django, не называя чистым _ <имя поля>

Можно включить дополнительный вход в систему отладочная сборка и отключить его для сборки конечных версий без издержек булевой проверки. Так, вместо:

void Log::trace(const char *pszMsg) {
    if (!bDebugBuild) {
        return;
    }
    // Do the logging
}

...

log.trace("Inside MyFunction");

Вы можете иметь:

#ifdef _DEBUG
#define LOG_TRACE log.trace
#else
#define LOG_TRACE void
#endif

...

LOG_TRACE("Inside MyFunction");

, Когда _DEBUG не будет определен, это не генерирует кода вообще. Ваша программа будет работать быстрее, и текст для входа трассировки не будет скомпилирован в Ваш исполняемый файл.

8
задан SapphireSun 9 December 2009 в 06:35
поделиться

2 ответа

Я обнаружил источник ошибки после того, как погрузился в исходный код Django forms.py .

Кажется, что если поле оставить пустым, в форме появится сообщение ValidationError для этого поля после вызова field.clean () , но тогда он не вызывает clean_ , но по-прежнему вызывает основной чистый метод класса. Чтобы иметь дело с чистым методом, который использует эти пустые поля, вы должны сделать следующее:

def clean(self):
    try:
        password = self.cleaned_data['password']
        # etc
    except KeyError:
        raise ValidationError('The password field was blank.')

    return self.cleaned_data
26
ответ дан 5 December 2019 в 05:19
поделиться

Вы можете переопределить это, используя required = False в ваших конструкторах полей.

username = forms.CharField(max_length=30, required=False)
password = forms.CharField(max_length=30,widget=forms.PasswordInput, required=False)

Это кажется нелогичным для вашего примера, но может быть полезно в других случаях

6
ответ дан 5 December 2019 в 05:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: