尝试在 Django 中的表单上使用脆皮表单过滤器时收到 'invalid form: crispy' 错误,但仅在一个 Django 应用程序中而不在另一个应用程序中?

Receiving 'invalid form: crispy' error when trying to use crispy forms filter on a form in Django, but only in one django app and not the other?

当尝试使用 crispy 过滤器时,我收到错误消息:

django.template.exceptions.TemplateSyntaxError: Invalid filter: 'crispy'

我认为这是因为 Django 由于某种原因无法找到 crispy 过滤器,因为当我输入一个不存在的过滤器的名称时,我收到了同样的错误。

我在 html 文档的顶部使用 {% load crispy_forms_tags %} 并使用 {{ form|crispy }} 应用过滤器。我还将 'crispy forms' 应用程序添加到 settings.py 文件,并使用 pip 安装了 django-crispy-forms 包,我可以清楚地看到使用 pip freeze

请注意,crispy forms 过滤器在我网站的另一个 django 应用程序中确实有效,即使我认为我没有更改该应用程序目录中的任何内容(但我可能是错的,因为我在那个目录)。我不知道有什么不同。我读了一些关于附加到第一个应用程序目录的过滤器,仅此而已,但该信息含糊不清,当我从使用它的模板中删除 {% load crispy_forms_tags %} 行时,脆皮过滤器仍然无法工作新应用。

这是模板。

{% extends "breed_identifier/base.html" %}
(% load crispy_forms_tags %)
{% block content %}
    <div class="content-section">
        <form method="POST">
            {% csrf_token %}
            <fieldset class="form-group">
                <legend class="border-bottom mb-4">Join Today</legend>
                {{ form|crispy }}
            </fieldset>
            <div class="form-group">
                <button class="btn btn-outline-info" type="submit">Sign Up</button>
            </div>
        </form>
        <div class="border-top pt-3">
            <small class="text-muted">
                Already Have An Account? <a class="ml-2" href="#">Sign In</a>
            </small>
        </div>
    </div>
{% endblock content %}

这在我的 settings.py 文件中。

INSTALLED_APPS = [
    'users.apps.UsersConfig',
    'django.contrib.admin',
    'breed_identifier.apps.BreedIdentifierConfig',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'crispy_forms',
]

我有同样的问题,但在我的模板顶部加载 crispy {% load crispy_forms_tags %} 表单后得到解决

    {% extends 'base.html' %} {% block content %}
    {% load crispy_forms_tags %}

<div class="container">
  <div class="row">
    <div class="col-md-8 card mb-4  mt-3 left  top">
      <div class="card-body">
        <h1>{% block title %} {{ post.title }} {% endblock title %}</h1>
        <p class=" text-muted">{{ post.author }} | {{ post.created_on }}</p>
        <p class="card-text ">{{ post.content | safe }}</p>
      </div>
    </div>
    {% block sidebar %} {% include 'sidebar.html' %} {% endblock sidebar %}

    <div class="col-md-8 card mb-4  mt-3 ">
      <div class="card-body">
        <!-- comments -->
        <h2>{{ comments.count }} comments</h2>

        {% for comment in comments %}
        <div class="comments" style="padding: 10px;">
          <p class="font-weight-bold">
            {{ comment.name }}
            <span class=" text-muted font-weight-normal">
              {{ comment.created_on }}
            </span>
          </p>
          {{ comment.body | linebreaks }}
        </div>
        {% endfor %}
      </div>
    </div>
    <div class="col-md-8 card mb-4  mt-3 ">
      <div class="card-body">
        {% if new_comment %}
        <div class="alert alert-success" role="alert">
          Your comment is awaiting moderation
        </div>
        {% else %}
        <h3>Leave a comment</h3>
    
        <form method="post" style="margin-top: 1.3em;">
          {{ comment_form | crispy }}
          {% csrf_token %}
          <button type="submit" class="btn btn-primary  btn-lg">Submit</button>
        </form>

        {% endif %}
      </div>
    </div>
  </div>
</div>
{% endblock content %}

请注意在分音中包含 {% load crispy_forms_tags %},例如 :

{% extends 'posts/bases/base.html' %}
{% load crispy_forms_tags %}
{% block title%}
<title>Register</title>
{% endblock %}

{% block content%}
<h1>Register</h1>
<form action="" method="post">
{% csrf_token %}

{{ form|crispy }}
<button type="submit">Register</button>
</form>

{% endblock %}

如果您在 base.html 中加载它,将不起作用

Django==3.1.4

django-crispy-forms==1.10.0

我有同样的错误......你正在使用(),就像这样: (% 负载 crispy_forms_tags %) 而不是 {},例如: {% 负载 crispy_forms_tags %}