我一直在为你的这个问题而苦苦挣扎,给出的答案虽然几年前可能相关,但并没有让我满意。
所以我自己构建了一个 hack 以使清晰的表单与 Django 3.0.2 一起工作(我没有测试其他版本,如果有请告诉我是任何其他版本的任何问题)。
安装相关的包,让清晰的表单与 Jinja2 一起工作:
pip install django-crispy-forms django-jinja
在您的项目目录(并且不是您的应用程序目录)中,确保您有一个jinja2.py 文件,其中包含:
from crispy_forms.utils import render_crispy_form
from django.contrib import messages
from django.contrib.staticfiles.storage import staticfiles_storage
from django.urls import reverse
from django.utils import translation
from jinja2 import Environment
def environment(**options):
env = Environment(
extensions=["jinja2.ext.i18n", "jinja2.ext.with_"], **options
)
env.globals.update(
{
"get_messages": messages.get_messages,
"static": staticfiles_storage.url,
"crispy": render_crispy_form, # THIS LINE IS RELEVANT
"url": reverse,
}
)
env.install_gettext_translations(translation)
return env
确保您的 jinja2 模板引擎在您的 django 的 settings 中加载此选项:
TEMPLATES = [
{
"BACKEND": "django.template.backends.jinja2.Jinja2",
"DIRS": [os.path.join(BASE_DIR, "jinja2")],
"APP_DIRS": True,
"OPTIONS": {"environment": "your_django_project.jinja2.environment"},
},
# ...
注意"crispy": render_crispy_form,,它将帮助您在 jinja2 模板中使用清晰的表单。
然后,在您的模板中,您可以使用:
{{ crispy(form) }}