Django {% crispy %} 标签 vs {{ form|crispy }} 过滤器有什么区别?

Django {% crispy %} tag vs {{ form|crispy }} filter what's the difference?

我正在努力思考 crispy 表单在后台执行的操作。

当我将标签 {% crispy form %} 放入我的 HTML 块时,会呈现我的表单布局和清晰的 bootstrap 格式(from crispy_forms.layout import Layout, Row, Columnfrom crispy_forms.bootstrap import AppendedText, InlineRadios )正确,但 提交按钮不会 post 到我的模型或重定向用户。

当我将标签 {{ form|crispy }} 放入我的 HTML 块中时,我的表单 布局未呈现 但提交按钮正常工作并且 posts 用户输入到我的模型。

我正在想办法让漂亮的布局 都具有实用的 HTML 形式。

我想通了,

您必须在 model/form 中的 Python 中将 POST 按钮添加到您的助手中,才能使 {% crispy form %} 标签起作用。

我最初在 HTML <button class="btn btn-primary" type="submit">Submit</button> 中有一个提交按钮,它只适用于 crispy 过滤器 {{ form|crispy }}

class ProfileUpdateForm(forms.ModelForm):
    class Meta:
        model = Profile

    def __init__(self, *args, **kwargs):
        super(ProfileUpdateForm, self).__init__(*args, **kwargs)
        self.helper = FormHelper(self)
        self.helper.layout = Layout(AppendedText('foo','bar')
        self.helper = FormHelper(self)
        self.helper.add_input(Submit('submit', 'Submit', css_class='btn-primary'))
        self.helper.form_method = 'POST'