Created
October 31, 2012 11:56
-
-
Save maximebf/3986659 to your computer and use it in GitHub Desktop.
Jinja2 macro to render WTForms fields with Twitter Bootstrap
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{% macro form_field(field) -%} | |
{% set with_label = kwargs.pop('with_label', False) %} | |
{% set placeholder = '' %} | |
{% if not with_label %} | |
{% set placeholder = field.label.text %} | |
{% endif %} | |
<div class="control-group {% if field.errors %}error{% endif %}"> | |
{% if with_label %} | |
<label for="{{ field.id }}" class="control-label"> | |
{{ field.label.text }}{% if field.flags.required %} *{% endif %}: | |
</label> | |
{% endif %} | |
<div class="controls"> | |
{% set class_ = kwargs.pop('class_', '') %} | |
{% if field.flags.required %} | |
{% set class_ = class_ + ' required' %} | |
{% endif %} | |
{% if field.type == 'BooleanField' %} | |
<label class="checkbox"> | |
{{ field(class_=class_, **kwargs) }} | |
{{ field.label.text|safe }} | |
</label> | |
{% else %} | |
{% if field.type in ('TextField', 'TextAreaField', 'PasswordField') %} | |
{% set class_ = class_ + ' input-xlarge' %} | |
{% elif field.type == 'FileField' %} | |
{% set class_ = class_ + ' input-file' %} | |
{% endif %} | |
{{ field(class_=class_, placeholder=placeholder, **kwargs) }} | |
{% endif %} | |
{% if field.errors %} | |
<span class="error help-inline">{{ field.errors|join(', ') }}</span> | |
{% endif %} | |
{% if field.description %} | |
<p class="help-block">{{ field.description|safe }}</p> | |
{% endif %} | |
</div> | |
</div> | |
{%- endmacro %} |
This has been very helpful for me. Thank you very much.
I forked and added an if statement to this macro. If you're using a select field then this macro will put a placehold attribute on that select field which is invalid html. I just added an if statement to check for select fields.
Thanks.
I created a fork that renders the field properly with bootstrap 3.0.0
How do I use this macro, where do I add this code?
Can you update this to the latest bootstrap3?
Thanks cancerballs https://gist.github.com/cancerballs/6876797
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Now I understand that I am wrong about field() macro. No need to provide that macro. But I have not understand the **kwargs.Thank you for great code!