Django 脆皮表格 : moving buttons to top

标签 django django-crispy-forms

我正在使用 django-crispy-forms 并自定义其按钮。我希望按钮出现在表单的顶部而不是底部。有没有办法向 FormHelper 提示这一点,这样就不需要从头开始构建整个布局? (从头开始我的意思是列出表单中出现的每个字段等等)

我的表单类代码:

def __init__(self, *args, **kwargs):
    forms.Form.__init__(self, *args, **kwargs)
    self.helper.add_input(Submit('respond', 'Respond'))
    self.helper.add_input(Submit('respond_and_close', 'Respond and close'))
    self.helper.add_input(Submit('close', 'Close'))
    self.helper.add_input(Submit('change_owner', 'Change owner'))

最佳答案

Django Crispy Forms 似乎不支持您想通过其 API 执行的操作。 但是,您可以自己在呈现表单的模板中简单地添加按钮标记,您只需要防止 crispy 呈现 form 标记:

# form python code
def __init__(self, *args, **kwargs):
    super(MyForm, self).__init__(*args, **kwargs)
    self.helper.form_tag = False


{# template code #}
<form action="." method="POST">
  <input type="submit" value="Respond" name="respond">
  <input type="submit" value="Respond and Close" name="respond_and_close">
  <input type="submit" value="Close" name="close">
  <input type="submit" value="Change Owner" name="change_owner">     
  {% crispy form form.helper %}
</form>

另一种可能性是覆盖 crispy 的 whole_uni_form.html模板。如果您使用的是 Bootstrap 模板包(默认),您可以在项目模板目录中名为“bootstrap”的子目录中创建该文件,并使其看起来像这样:

{# templates/bootstrap/whole_uni_form.html #}
{% load crispy_forms_utils %}

{% specialspaceless %}
{% if form_tag %}<form {{ flat_attrs|safe }} method="{{ form_method }}" {% if form.is_multipart %} enctype="multipart/form-data"{% endif %}>{% endif %}
{% if form_method|lower == 'post' and not disable_csrf %}
    {% csrf_token %}
{% endif %}

{% if inputs %}
    <div class="form-actions">
        {% for input in inputs %}
            {% include "bootstrap/layout/baseinput.html" %}
        {% endfor %}
    </div>
{% endif %}

{% include "bootstrap/display_form.html" %}

{% if form_tag %}</form>{% endif %}
{% endspecialspaceless %}

请记住,这会影响您网站中使用 crispy 呈现的任何表单。

关于Django 脆皮表格 : moving buttons to top,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20068314/

相关文章:

Django 测试。运行测试时从生产数据库查找数据?

django - 使用内联表单在 django-crispy-forms 中呈现字段错误

python - is_paginated 不适用于 Django 通用 View

python - Django - 获取没有任何相关对象的对象

html - 如何自定义 Django 模板中单选按钮的显示?

python - 在 Django View 中记录响应时间

python - AsyncResult(task_id) 即使在任务开始后也返回 "PENDING"状态

Django Crispy 表单和选项组

django - 导入错误: No module named bootstrap3

django-forms - 未使用 Django Crispy Forms 呈现的 Formset 的非表单错误