The `formfield` template tag will render a form field of a tape-form enabled form
    using the template provided by `get_field_template` method of the form together with
    the context generated by `get_field_context` method of the form.

    Usage::

        {% load tapeforms %}
        {% formfield my_form.my_field %}

    You can override the used field template using the keyword argument `using`::

        {% load tapeforms %}
        {% formfield my_form.my_field using='other_field_template.html' %}

    :param bound_field: The `BoundField` from a Django form to render.
    :return: Rendered field (label + widget + other stuff) as HTML.

def formfield(context, bound_field, **kwargs):
    """
    The `formfield` template tag will render a form field of a tape-form enabled form
    using the template provided by `get_field_template` method of the form together with
    the context generated by `get_field_context` method of the form.

    Usage::

        {% load tapeforms %}
        {% formfield my_form.my_field %}

    You can override the used field template using the keyword argument `using`::

        {% load tapeforms %}
        {% formfield my_form.my_field using='other_field_template.html' %}

    :param bound_field: The `BoundField` from a Django form to render.
    :return: Rendered field (label + widget + other stuff) as HTML.
    """

    if not isinstance(bound_field, forms.BoundField):
        raise template.TemplateSyntaxError(
            'Provided field should be a `BoundField` instance, actual type: {0}'.format(
                bound_field.__class__.__name__))

    return render_to_string(
        bound_field.form.get_field_template(bound_field, kwargs.get('using', None)),
        bound_field.form.get_field_context(bound_field),
    )