渲染 Cripy-form 时出现模板语法错误

问题描述 投票:0回答:2

我使用 semantic-ui 作为 crispy-forms 的模板。尝试加载页面时会导致以下错误:

模板语法错误位于 /forum/newpost/pqs53kqsbgsqd66pg0i60u-isjtvagbo4ii4q9/

crispy 标签的 template_pack 参数应该位于 ('bootstrap', 'uni_form', 'bootstrap3', 'foundation-5')

设置文件包含以下条目(除其他外):

  • CRISPY_TEMPLATE_PACK = 'semantic-ui'
  • INSTALLED_APPS = ('crispy_forms', 'semantic_ui')

这是来自forumpost_create.html的模板代码:

{% extends 'forum/layouts/forum_main.html' %}
{% load crispy_forms_tags %}
{% block content %}
<div class="ui main text container">
  <form action="" method="post" class="ui form">
    {% csrf_token %}
    {% crispy form %}
    <input type="submit" value="Save" />
  </form>
</div>
{% endblock %}

当我在

template
中使用 form|crispy 时,错误消失,但模板渲染后不受影响,即使查看输出 HTML 源代码,也没有任何更改。

代码来自forms.py

class ForumPostForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super(ForumPostForm, self).__init__(*args, **kwargs)

        self.helper = FormHelper(self)
        self.helper.layout = Layout(
            Fieldset(
                'Post body',
                'body'
            ),
            ButtonHolder(
                Submit('submit', 'Submit', css_class='ui primary button')
            )
        )

    class Meta:
        model = ForumPost
        fields = ['body']

如何使其发挥作用?是因为我正在使用 semantic-ui 并且需要做一些不同的事情吗? (我遇到的大多数教程都更喜欢bootstrap)。

django django-forms django-crispy-forms
2个回答
2
投票

您需要将semantic-ui添加到设置文件中的CRISPY_ALLOWED_TEMPLATE_PACKS中

CRISPY_ALLOWED_TEMPLATE_PACKS = ('bootstrap', 'uni_form', 'bootstrap3', 'bootstrap4', 'semantic-ui')

0
投票
  1. 更新您的

    settings.py
    文件:

    • 找到
      CRISPY_TEMPLATE_PACK
      设置并获取其值。
    • 此外,确保上述变量的精确值包含在
      CRISPY_ALLOWED_TEMPLATE_PACKS
      的元组中,如下所示:
    CRISPY_TEMPLATE_PACK = "Bootstrap5"
    CRISPY_ALLOWED_TEMPLATE_PACKS = ("Bootstrap5",)
    

    如果您希望允许使用其他模板包,您也可以将它们包含在元组中:

    CRISPY_ALLOWED_TEMPLATE_PACKS = ("Bootstrap4", "Bootstrap5", "uni_form")
    
  2. 调整您的模板代码:

    • 在模板文件中将
      {{ form|crispy }}
      的实例替换为
      {% crispy form %}

此设置可确保您的项目配置为使用带有 django-crispy-forms 的 Bootstrap 5 模板,并且更新的模板标签可以正确呈现您的表单。

© www.soinside.com 2019 - 2024. All rights reserved.