Forked from shvets-sergey/caller_usage_example.html
Last active
August 29, 2015 14:23
-
-
Save nouseforname/469271dbc8951a8e8b4f to your computer and use it in GitHub Desktop.
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
{% extends 'base.html' %} | |
{% import 'macros.html' as macros %} | |
{% block content %} | |
<div class="row"> | |
<div class="col-xs-12 col-md-3 col-sm-4 col-sm-offset-4 col-md-offset-4 col-lg-3 col-lg-offset-4"> | |
<div class="login-message"> | |
Login to AwesomeService! | |
</div> | |
{% call macros.render_form(form, action_url=url_for('login_view'), action_text='Login', | |
class_='login-form') %} | |
{{ macros.render_field(form.email, label_visible=false, placeholder='Email', type='email') }} | |
{{ macros.render_field(form.password, label_visible=false, placeholder='Password', type='password') }} | |
{{ macros.render_checkbox_field(form.remember_me) }} | |
{% endcall %} | |
</div> | |
</div> | |
{% endblock content %} |
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
{# Renders field for bootstrap 3 standards. | |
Params: | |
field - WTForm field | |
kwargs - pass any arguments you want in order to put them into the html attributes. | |
There are few exceptions: for - for_, class - class_, class__ - class_ | |
Example usage: | |
{{ macros.render_field(form.email, placeholder='Input email', type='email') }} | |
#} | |
{% macro render_field(field, label_visible=true) -%} | |
<div class="form-group {% if field.errors %}has-error{% endif %} {{ kwargs.pop('class_', '') }}"> | |
{% if (field.type != 'HiddenField' and field.type !='CSRFTokenField') and label_visible %} | |
<label for="{{ field.id }}" class="control-label">{{ field.label }}</label> | |
{% endif %} | |
{{ field(class_='form-control', **kwargs) }} | |
{% if field.errors %} | |
{% for e in field.errors %} | |
<p class="help-block">{{ e }}</p> | |
{% endfor %} | |
{% endif %} | |
</div> | |
{%- endmacro %} | |
{# Renders checkbox fields since they are represented differently in bootstrap | |
Params: | |
field - WTForm field (there are no check, but you should put here only BooleanField. | |
kwargs - pass any arguments you want in order to put them into the html attributes. | |
There are few exceptions: for - for_, class - class_, class__ - class_ | |
Example usage: | |
{{ macros.render_checkbox_field(form.remember_me) }} | |
#} | |
{% macro render_checkbox_field(field) -%} | |
<div class="checkbox"> | |
<label> | |
{{ field(type='checkbox', **kwargs) }} {{ field.label }} | |
</label> | |
</div> | |
{%- endmacro %} | |
{# Renders radio field | |
Params: | |
field - WTForm field (there are no check, but you should put here only BooleanField. | |
kwargs - pass any arguments you want in order to put them into the html attributes. | |
There are few exceptions: for - for_, class - class_, class__ - class_ | |
Example usage: | |
{{ macros.render_radio_field(form.answers) }} | |
#} | |
{% macro render_radio_field(field) -%} | |
{% for value, label, _ in field.iter_choices() %} | |
<div class="radio"> | |
<label> | |
<input type="radio" name="{{ field.id }}" id="{{ field.id }}" value="{{ value }}">{{ label }} | |
</label> | |
</div> | |
{% endfor %} | |
{%- endmacro %} | |
{# Renders WTForm in bootstrap way. There are two ways to call function: | |
- as macros: it will render all field forms using cycle to iterate over them | |
- as call: it will insert form fields as you specify: | |
e.g. {% call macros.render_form(form, action_url=url_for('login_view'), action_text='Login', | |
class_='login-form') %} | |
{{ macros.render_field(form.email, placeholder='Input email', type='email') }} | |
{{ macros.render_field(form.password, placeholder='Input password', type='password') }} | |
{{ macros.render_checkbox_field(form.remember_me, type='checkbox') }} | |
{% endcall %} | |
Params: | |
form - WTForm class | |
action_url - url where to submit this form | |
action_text - text of submit button | |
class_ - sets a class for form | |
#} | |
{% macro render_form(form, action_url='', action_text='Submit', class_='', btn_class='btn btn-default') -%} | |
<form method="POST" action="{{ action_url }}" role="form" class="{{ class_ }}"> | |
{{ form.hidden_tag() if form.hidden_tag }} | |
{% if caller %} | |
{{ caller() }} | |
{% else %} | |
{% for f in form %} | |
{% if f.type == 'BooleanField' %} | |
{{ render_checkbox_field(f) }} | |
{% elif f.type == 'RadioField' %} | |
{{ render_radio_field(f) }} | |
{% else %} | |
{{ render_field(f) }} | |
{% endif %} | |
{% endfor %} | |
{% endif %} | |
<button type="submit" class="{{ btn_class }}">{{ action_text }} </button> | |
</form> | |
{%- endmacro %} |
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
{% extends 'base.html' %} | |
{% from 'macros.html' import render_form %} | |
{% block content %} | |
<div class="your-form"> | |
{{ render_form(your_form, action_url='/submit_url', action_text='Submit Form') }} | |
</div> | |
{% endblock content %} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment