Here they say it's not supported out of the box.Поддержка WTForms для ввода атрибута readonly?
Знаете ли вы, что способ ввода полей формы ввода HTML использует атрибут 'readonly' с WTForms?
Here they say it's not supported out of the box.Поддержка WTForms для ввода атрибута readonly?
Знаете ли вы, что способ ввода полей формы ввода HTML использует атрибут 'readonly' с WTForms?
Я предполагаю, что вы говорите об атрибуте <input readonly>
в HTML/XHTML, о котором вы не говорили. (связанный поток относится к проблеме более низкого уровня с тем, как игнорировать переданный ввод формы)
Способ установки атрибута readonly (и даже любого атрибута в поле) является ключевым словом-arg в вашем шаблоне. При использовании дзиндзя, это выглядит как (html5):
{{ form.myfield(readonly=true) }}
И для XHTML или версии WTForms старше 0.6.3:
{{ form.myfield(readonly="readonly") }}
Сразу отметим, что «только для чтения» атрибут только намек в браузер, и это не влияет на то, что пользователь представляет. Это значит, что злоумышленник (или кто-то, пользующийся браузером с пользовательским JS a la greasemonkey или JS-консолью или DOM-деревом) может генерировать запрос POST, изменяющий значение поля, независимо от того, установлен ли атрибут readonly на тег ввода.
По этой причине атрибут readonly полезен только в качестве опции для изменения пользовательского опыта (например, отключение поля на основе какого-либо события/действия с использованием JS), а ввод, поступающий из поля «только для чтения», не является более надежным, чем любой другой ввод формы.
https://wtforms-components.readthedocs.org/en/latest/#
from wtforms import Form, DateField, TextField
from wtforms_components import TimeField, read_only
class EventForm(Form):
name = TextField('Name')
start_date = DateField('Start date')
start_time = TimeField('Start time')
def __init__(self, *args, **kwargs):
super(EventForm, self).__init__(*args, **kwargs)
read_only(self.name)
Раствор с помощью render_kw
в объявлении поля формы.
my_field = fields.StringField('Label', render_kw={'readonly': True})
И, если вы хотите получить доступ к нему из Jinja2, вы можете сделать: {%, если form.my_field.render_kw.readonly} блабло чтения {% ENDIF%} – techniao
совершенных! это позволяет мне объявить его в моих формах.py, а затем отобразить форму с помощью Bootstrap. –
Кажется немного глупым, вы не можете передать их в виде kwargs в виджет или что-то еще, когда вы объявляете свою форму. – coleifer