尝试在 Django 中的表单上使用脆表单过滤器时收到“无效表单:脆”错误,但仅在一个 django 应用程序中而不是另一个?
Posted
技术标签:
【中文标题】尝试在 Django 中的表单上使用脆表单过滤器时收到“无效表单:脆”错误,但仅在一个 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? 【发布时间】:2020-01-06 22:16:52 【问题描述】:当尝试使用 crispy
过滤器时,我收到一个错误:
django.template.exceptions.TemplateSyntaxError:过滤器无效: '脆'
我相信这是因为Django
可能由于某种原因找不到脆皮过滤器,因为当我输入一个不存在的过滤器的名称时,我收到了同样的错误。
我在 html 文档的顶部使用了% load crispy_forms_tags %
,并使用 form|crispy
来应用过滤器。我还在settings.py
文件中添加了'crispy forms'应用程序,并使用pip
安装了django-crispy-forms
包,使用pip freeze
可以清楚地看到它。
请注意,虽然我认为我没有更改该应用程序目录中的任何内容(但我可能错了,自从我在该目录中工作已经有一段时间了)。我无法弄清楚有什么不同。我阅读了一些关于附加到第一个应用程序目录的过滤器的信息,仅此而已,但该信息含糊不清,当我从使用它的模板中删除 % 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',
]
【问题讨论】:
请发布呈现表单的完整模板 - 这样我们就可以看到相对于表单本身加载过滤器的位置。 @solarissmoke 我在使用之前加载了过滤器,但按照您的建议发布了整个模板。 你有一个错字。您使用的是括号(% load crispy_forms_tags %)
而不是大括号 % load crispy_forms_tags %
,因此您实际上并没有加载脆标签。
这很尴尬@Alasdair。谢谢!
【参考方案1】:
我有同样的错误......你正在使用(),就像这样: (% 加载crispy_forms_tags %) 而不是 ,例如: % 加载crispy_forms_tags %
【讨论】:
【参考方案2】:请务必将 % 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
【讨论】:
【参考方案3】:我遇到了同样的问题,但在我的模板顶部加载了清晰的 % 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 %
【讨论】:
以上是关于尝试在 Django 中的表单上使用脆表单过滤器时收到“无效表单:脆”错误,但仅在一个 django 应用程序中而不是另一个?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Django 模型表单 + 表单向导 + Crispy - 不进行第二步