djangodjango-templatesjinja2django-crispy-forms

django crispy forms with jinja2


I want to use Jinja2 and Django crispy forms together, but when I load crispy_forms_tags in my template and trying to render form with this template tag, I get an error:

Encountered unknown tag 'crispy'. Jinja was looking for the following tags: 'endblock'. The innermost block that needs to be closed is 'block'.

My template code:

{% extends 'base.html' %}
{% load crispy_forms_tags %}
{% block content %}
    <div class="panel-heading"><h3>Registration</h3></div>
    {% crispy form %}
{% endblock %}

How can I use this apps together?


Solution

  • Better solution:

    templatetags.py

    from crispy_forms.utils import render_crispy_form
    from django_jinja import library
    from jinja2 import contextfunction
    
    
    @contextfunction
    @library.global_function
    def crispy(context, form):
        return render_crispy_form(form, context=context)
    

    In template:

    {{ crispy(form) }}