По состоянию на WTForms 2.2 атрибут HTML required
отображается, когда в поле есть валидатор, который устанавливает флаг "required" , Это позволяет клиенту выполнять некоторые основные проверки, сохраняя обратную связь с сервером.
Вы должны оставить его в браузере, чтобы справиться с этим. Эти сообщения являются стандартными и настраиваются для локали пользователя компьютера. Для управления этими сообщениями существует JavaScript API (см. Переполнение стека и MDN ), хотя WTForms не обеспечивает никакой интеграции с ним (но хорошая идея для расширения ).
Если вы действительно хотите отключить это, вы можете передать required=False
при рендеринге поля.
{{ form.name(required=False) }}
Вы можете отключить его для целую форму вместо переопределения Meta.render_field
.
class NoRequiredForm(Form):
class Meta:
def render_field(self, field, render_kw):
render_kw.setdefault('required', False)
return super().render_field(field, render_kw)
Вы можете отключить ее для нескольких форм, наследуя от базовой формы, которая ее отключает.
class UserForm(NoRequiredForm):
...
Вы также можете отключите проверку клиента, не изменяя столько кода, установив атрибут novalidate
в тег HTML form
.
Котлин считает свойство неинициализированным до конца его инициализатора, поэтому он не может использоваться внутри собственного инициализатора даже в лямбдах. Эта семантика аналогична ограничению использования локальной переменной внутри ее инициализатора .
Существует несколько способов:
this
объявленного объекта: private var runnable: Runnable = object : Runnable {
override fun run() {
/* Do something very important */
handler.postDelayed(this, 5000)
}
}
Это хорошо работает lateinit var
или делегированное свойство с Delegates.notNull()
. ] : private lateinit var runnable: Runnable
init {
runnable = Runnable {
/* Do something very important */
handler.postDelayed(runnable, 5000)
}
}
Тот же инициализатор будет работать с этим объявлением: private var runnable: Runnable by Delegates.notNull()
class SelfReference<T>(val initializer: SelfReference<T>.() -> T) {
val self: T by lazy {
inner ?: throw IllegalStateException("Do not use `self` until initialized.")
}
private val inner = initializer()
}
fun <T> selfReference(initializer: SelfReference<T>.() -> T): T {
return SelfReference(initializer).self
}
И тогда вы можете написать что-то вроде private var runnable: Runnable = selfReference {
Runnable {
/* Do something very important */
handler.postDelayed(self, 5000)
}
}
Вы также можете использовать
private var runnable: Runnable = Runnable {
/* Do something very important */
handler.postDelayed(runnable(), 5000)
}
private fun runnable() = runnable