2012-03-07 26 views

cevap

12

HTML/XHTML'de <input readonly> özniteliğinden bahsediyorsunuzdur, bu, bağlandığınız konu dizininin konusuyla ilgili değildir. (Bağlantılı iş parçacığı, geçirilen form girdisini nasıl yok sayılacağı ile ilgili alt düzey bir sorundur)

Bir salt okunur özniteliği (ve aslında bir alandaki herhangi bir öznitelik) ayarlama yolu, şablonunuzda bir anahtar kelime argümanıdır.

{{ form.myfield(readonly=true) }} 

Ve XHTML veya 0.6.3 daha eski WTForms sürümleri için: Jinja kullanılıyorsa, bu (html5) benziyor

{{ form.myfield(readonly="readonly") }} 

Sadece 'salt okunur' niteliği yalnızca bir ipucu olduğuna dikkat tarayıcıya ve kullanıcının ne gönderdiğine hiçbir etkisi yoktur. Yani, kötü niyetli bir kullanıcı (veya özel JS a la greasemonkey veya JS konsolu veya DOM ağacı içeren bir tarayıcı kullanan bir kişi), salt okunur özniteliğin ayarlanıp ayarlanmadığına bakılmaksızın bir alanın değerini değiştirerek bir POST isteği oluşturabilir. giriş etiketi.

Bu nedenle, salt okunur özniteliği, yalnızca kullanıcı deneyimini değiştirme (örneğin, JS kullanarak bazı olay/eylemleri temel alan bir alanı devre dışı bırakma) için bir seçenek olarak yararlıdır ve 'salt okunur' alandan gelen girdiler yok diğer form girdilerinden daha güvenilebilir.

+13

Biraz aptalca görünüyorsun, bunları, formunuzu ilan ederken widget'a veya bir şeye çarpıştıramazsın. – coleifer

2

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) 
3

solüsyonun alanı bildiriminde render_kw kullanıyor.

my_field = fields.StringField('Label', render_kw={'readonly': True}) 
+0

Ve eğer Jinja2'den erişmek istiyorsanız, aşağıdakileri yapabilirsiniz: {% if form.my_field.render_kw.readonly} readonly blabla {% endif%} – techniao

İlgili konular