尝试在 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 %}
当尝试使用 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 %}