2012-08-16 14 views
5

के साथ एचटीएमएल शीर्षक विशेषताओं को प्रस्तुत करना मैं विभिन्न टेम्पलेट्स में लंबे रूपों में फ़ील्ड प्रस्तुत करने के लिए Flask-WFT documentation page पर प्रस्तुत रेंडर_फील्ड मैक्रो का उपयोग कर रहा हूं।फ्लास्क-डब्ल्यूटीएफम्स फ़ील्ड विवरण

एक क्षेत्र इस

year_built = IntegerField(label='Year Built', 
      description='Year built, not the year of a major renovation.', 
      validators=[validators.NumberRange(
            min=1700, 
            max=2012, 
            message="Between %(min)s and %(max)s")]) 

मैक्रो इस तरह दिखता है की तरह परिभाषित किया गया है ...

{% macro render_field(field) %} 
    <dt>{{ field.label }} 
    <dd>{{ field(**kwargs)|safe }} 
    {% if field.errors %} 
    <ul class=errors> 
    {% for error in field.errors %} 
     <li>{{ error }}</li> 
    {% endfor %} 
    </ul> 
    {% endif %} 
    </dd> 
{% endmacro %} 

रूपों खुद को अलग-अलग क्षेत्रों का उपयोग कर रखा जाता है में ...

{{ render_field(form.year_built, class="input text")}} 

जो मैं समझ नहीं सकता वह मैक्रो वें के हिस्से में फ़ील्ड ऑब्जेक्ट में वर्णन का उपयोग करने का एक तरीका है एचटीएमएल फ़ील्ड field(**kwargs) बनाता है। मुझे पता है कि मैं render_field फ़ंक्शन में कीवर्ड पास कर सकता हूं लेकिन मैं 100 से अधिक फ़ील्ड वाले फॉर्मों से निपट रहा हूं और form.py में विवरण सेट कर रहा हूं और फिर टेम्पलेट.html में शीर्षक शीर्षक के रूप में इसे फिर से सेट करना अनावश्यक रिक्ति की तरह लगता है। मैं वास्तव में एक शीर्षक के रूप में विवरण प्रदर्शित करने के लिए मैक्रो का उपयोग करना चाहूंगा यदि यह वहां है या शीर्षक के बिना फ़ील्ड प्रदर्शित करता है।

फ़ील्ड() फ़ंक्शन चलाने से पहले kwargs पर नई प्रविष्टियां जोड़ने का कोई तरीका है?

उत्तर

8

तो यह बहुत आसान है की तुलना में मैंने सोचा था ...

{% macro render_field(field) %} 
    <dt>{{ field.label }} 
    <dd>{{ field(title=field.description, **kwargs)|safe }} 
    {% if field.errors %} 
    <ul class=errors> 
    {% for error in field.errors %} 
     <li>{{ error }}</li> 
    {% endfor %} 
    </ul> 
    {% endif %} 
    </dd> 
{% endmacro %} 
+0

हे ... मुझे लगता है कि क्षेत्र() टेम्पलेट के अंदर अपने forms.py अंदर फील्ड वर्ग से अलग है नहीं पता था। दूसरे शब्दों में, मैं 'dataforajax' (फ़ील्ड (dataforajax = 'test') जैसी कुछ विशेषता जोड़ सकता हूं और यह इसे HTML में रखता है। हालांकि, मुझे 'डेटा-फॉर-एजेक्स' जोड़ने में परेशानी हो रही है, मुझे डैश को रखने के लिए विशेषताओं के कुछ जावास्क्रिप्ट संपादन करना पड़ सकता है ----। – Dexter

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