2012-08-16 34 views
5

Tôi đang sử dụng macro render_field được hiển thị trên Flask-WFT documentation page để hiển thị trường trong các biểu mẫu dài trên các mẫu khác nhau.hiển thị thuộc tính tiêu đề html với mô tả trường Flask-WTForms

Một lĩnh vực được định nghĩa như thế này

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")]) 

vĩ mô trông như thế này ...

{% 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 %} 

Trong các hình thức tự các lĩnh vực cá nhân được đặt bằng ...

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

Điều tôi không thể hiểu là cách sử dụng mô tả trong đối tượng trường trong phần của macro khi tạo trường HTML field(**kwargs). Tôi biết rằng tôi có thể chuyển từ khóa tới hàm render_field nhưng tôi đang xử lý các biểu mẫu với hơn 100 trường và thiết lập mô tả trong forms.py và sau đó đặt lại nó làm từ khóa tiêu đề trong template.html có vẻ như sự bổ sung không cần thiết. Tôi thực sự muốn sử dụng các macro để hiển thị một mô tả như là một tiêu đề nếu nó có hoặc chỉ hiển thị các lĩnh vực mà không có một tiêu đề nếu nó không.

Có cách nào để thêm mục nhập mới vào kwargs trước khi hàm trường() chạy không?

Trả lời

8

Vì vậy, nó là dễ dàng hơn nhiều hơn tôi nghĩ ...

{% 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

Oh của tôi ... Tôi đã không nhận ra rằng lĩnh vực() bên trong mẫu khác với lớp Dòng bên forms.py của bạn. Nói cách khác, tôi có thể thêm một số thuộc tính như 'dataforajax' (trường (dataforajax = 'test')) và nó đặt nó trong html. Tuy nhiên, tôi đang gặp sự cố khi thêm 'data-for-ajax', tôi có thể phải thực hiện một số chỉnh sửa javascript của các thuộc tính để đặt dấu gạch ngang ----. – Dexter

Các vấn đề liên quan