Django脆皮形式和jinja2 2

时间:2018-10-12 08:31:19

标签: jinja2 django-crispy-forms

1。我的项目应用程序文件夹为:service。在service / templatetags.py下,输入以下代码

from jinja2 import contextfunction
from crispy_forms.utils import render_crispy_form
from django_jinja import library

@contextfunction
@library.global_function
def crispy(context, form):
    return render_crispy_form(form, context=context)

2.forms.py

   class ServiceRequestForm(forms.ModelForm):      
      class Meta:
          model = ServiceRequest
          fields = (
                'client', 'service_type', 'request_description', 'request_date', 'expected_complete_date'
                ) 

3.Jinja2模板:我的模板位于template / services / servicerequest_form.html下,具有以下代码

{% extends 'services/services_sidebarbase.html' %}
{% block sidebarcontent %}  
     {# {% load crispy_forms_tags  %} removed #}        
     <h4>Service request form</h4>      
     <form  method="post" >
        <input type="hidden" name="csrfmiddlewaretoken" value="{{ csrf_token }}">
        {% autoescape true %}            
           {{ crispy(form)}}            
        {% endautoescape %}  
        <button class="btn btn-primary" type="submit">Save</button>             
     </form> 
{% endblock %}

我试图按照对与jinja2和脆皮形式有关的问题的指示进行操作,但这对我不起作用。当我在jinja2模板中调用crispy(form)时,出现了类似crispy undefined的错误。 django crispy forms with jinja2

在我看来,以上解决方案与我安装的软件包django-jinja有依赖性。 我已经按照下面的说明安装了酥脆的表格。
https://django-crispy-forms.readthedocs.io/en/latest/install.html#installing-django-crispy-forms

我对django有点陌生。我将jinja2 2.10与Django 2.0和django-crispy-form 1.7.2一起使用 如果有人指导我解决此问题,我将不胜感激。

谢谢 拉杰什

1 个答案:

答案 0 :(得分:0)

您是否已将此标签添加到settings.py中的TEMPLATES中? 像这样:

TEMPLATES = [
    {
        "BACKEND": "django_jinja.backend.Jinja2",
        "APP_DIRS": True,
        "OPTIONS": {
            "match_extension": ".jinja",
            "filters": {
                "crispy": "service.templatetags.crispy",
            },
        }
    },
]