2012-03-07 10 views

उत्तर

12

मुझे लगता है कि आप HTML/XHTML में <input readonly> विशेषता के बारे में बात कर रहे हैं, जो कि आपके द्वारा लिंक किए गए चर्चा थ्रेड के बारे में नहीं है। (लिंक्ड थ्रेड पास किए गए फॉर्म इनपुट को अनदेखा करने के तरीके के साथ निम्न स्तर के मुद्दे के बारे में है)

एक पाठक विशेषता (और वास्तव में किसी फ़ील्ड पर कोई विशेषता) सेट करने का तरीका आपके टेम्पलेट में एक कीवर्ड-तर्क के रूप में है। यदि जिंजा का उपयोग कर, यह (एचटीएमएल 5) की तरह दिखता है:

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

और एक्सएचटीएमएल या 0.6.3 से अधिक उम्र के WTForms के संस्करणों के लिए:

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

बस ध्यान दें कि 'केवल पढ़ने के लिए' विशेषता केवल एक संकेत है ब्राउज़र पर, और इसका कोई प्रभाव नहीं पड़ता कि उपयोगकर्ता क्या सबमिट करता है। ऐसा कहने के लिए, एक दुर्भावनापूर्ण उपयोगकर्ता (या कोई कस्टम जेएस ए ला greasemonkey या एक जेएस कंसोल या एक डोम पेड़ के साथ ब्राउज़र का उपयोग कर रहा है) एक POST अनुरोध उत्पन्न कर सकता है इस पर ध्यान दिए बिना कि पाठक विशेषता पर सेट किया गया है इनपुट टैग

इस कारण से, केवल पढ़ने के लिए उपयोगकर्ता उपयोगकर्ता अनुभव को संशोधित करने के विकल्प के रूप में उपयोगी है (उदाहरण के लिए, जेएस का उपयोग करके कुछ घटना/क्रिया के आधार पर फ़ील्ड को अक्षम करना) और 'रीडोनली' फ़ील्ड से आने वाला इनपुट नहीं है किसी अन्य फॉर्म इनपुट से अधिक भरोसेमंद।

+13

यह थोड़ा मूर्खतापूर्ण लगता है कि आप इन्हें विजेट के रूप में या कुछ रूप में जब आप अपना फॉर्म घोषित कर रहे हैं तो इसे पास नहीं कर सकते हैं। – 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

समाधान फॉर्म फील्ड घोषणा में render_kw उपयोग कर रहा है।

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

और, यदि आप इसे Jinja2 से एक्सेस करना चाहते हैं, तो आप यह कर सकते हैं: {% अगर form.my_field.render_kw.readonly} रीडोनली ब्लैब्ला {% endif%} – techniao

संबंधित मुद्दे