当前位置: 首页 > 知识库问答 >
问题:

Django脆皮表单将提交按钮放在不同的位置

夏谦
2023-03-14

我使用的是Django crispy表单,我希望能够将Submit按钮放置在表单底部旁边的其他位置。

这是我的表格:

from django import forms
from django.core.urlresolvers import reverse
from crispy_forms.helper import FormHelper
from crispy_forms.layout import Submit, Layout, Button, Fieldset, ButtonHolder, Submit
from gpsim.models import GPSimConfig

class AddNewGPSimConfigForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super(AddNewGPSimConfigForm, self).__init__(*args, **kwargs)
        self.initial['name'] = ''
        self.helper = FormHelper()
        self.helper.form_id = 'add-new-gpsim-config'
        self.helper.form_method = 'post'
        self.helper.form_action = reverse('gpsim:add_gpsim_config')
        self.helper.layout = Layout(
            Fieldset(
                '',
                'name',
                'other fields...',
            ),
            ButtonHolder(
                Submit('submit', 'Create', css_class='btn-default')
            )
        )

    class Meta:
        model = GPSimConfig

模板是一个引导模式弹出窗口。该模态最初显示一个带有可供选择的GPSimConfig项列表的窗体。当用户选择一个项目时,通过JQuery将这个表单加载到一个跨度中。

在模态的底部,有一个取消按钮,我想把提交按钮放在取消按钮旁边的底部,但是当生成脆皮表单时,它会把提交按钮放在最后一个字段之后,并关闭形式。

以下是加载到模态的“模态内容”div中的模板。

{% extends "gpsim/tmpl_gpsim_modal_base.html" %}
{% load staticfiles %}

{% block modal-title %}Add GPSim Config{% endblock %}
{% block modal-body-left %}
Copy GPSim config from<br><br>
{% if my_gpsim_configs %}
My GPSim Configs<br>
<select id="my_gpsim_config_id" name="gpsim_config" class="form-control" onChange="load_span_from_select_change('my_gpsim_config_id','/gpsim/gpsim-config/add/?copy-from-id=', 'add_gpsim_config_span');">
    <option>select</option>
    {% for gpsim_config in my_gpsim_configs %}
    <option value="{{gpsim_config.id}}">{{gpsim_config.name}}</option>
    {% endfor %}
{% endif %}

{% endblock %}
{% block modal-body-right %}
<span id="add_gpsim_config_span"></span>
{% endblock %}
{% block modal-submit-button %}
<div id="submit-div">
</div>
{% endblock %}

span“add_gpsim_config_span”是通过Jquery加载表单的地方,提交按钮与表单关闭标记一起放置在那里。我想把Submit放在“Submit div”div中。

有办法做到这一点吗?

共有3个答案

苏华藏
2023-03-14

我有一个完全相同的问题。不使用jQuery的一种方法是在\uuuu init\uuuu包含self。帮手form_tag=False。然后,在“模式内容”中编写表单标记,使其包含模式页眉、正文和页脚。在您的情况下,似乎必须为此使用嵌套块,但以下是我的工作解决方案:

<div class="container">
  <!-- Modal -->
  <div class="modal fade" id="myModal" role="dialog">
    <div class="modal-dialog">

      <!-- Modal content-->
      <div class="modal-content">
      <form id="modal-form" action="{% url 'emailme' %}" class="form-horizontal emailme-form" method="POST">
        <div class="modal-header">
          <button type="button" class="close" data-dismiss="modal">&times;</button>
          <h4><span class="glyphicon glyphicon-envelope"></span> Email Me</h4>
        </div>
        <div class="modal-body">
            <div class="modal-form">
            {% csrf_token %}
            {% crispy emailme_form emailme_form.helper %}
            </div>
    </div>
        <div class="modal-footer">
          <button type="submit" name="submit" value="submit" class="btn btn-success pull-right" id="submit-id-submit"><span class="glyphicon glyphicon-send"></span> Send</button>
        </div>
      </form>
      </div>

    </div>
  </div> 
</div>
马正初
2023-03-14

我知道这是一个古老的问题。您可以通过指定ButtonHoldercss_class参数来包装按钮。例如,它的工作原理如下(与字段包装器一起):

    self.helper.layout = Layout(
        Div(*self.fields, css_class="modal-body"),
        ButtonHolder(
            Button('cancel', 'Cancel', css_class="btn btn-md btn-default",
                   data_dismiss="modal"),
            Submit('submit', 'Create', css_class='btn-default'),
            css_class="modal-footer")
        )
     )
温举
2023-03-14

首先,从FormHelper中删除按钮文件夹(Submit())按钮。

然后将按钮放入提交div,类似于:

<div id="submit-div">
    <button class="btn btn-default">Submit</button>
</div>

并在单击按钮时使用jQuery提交表单:

$('#submit-div btn').click(function() {
    $("#add-new-gpsim-config").submit();
});
 类似资料:
  • 我使用django crispy为一个项目呈现表单,并使用bootstrap作为CSS框架。我有以下代码 但在HTML中,呈现为 注意,当我想要“btn btn default”时,类是“btn btn primary btn btn default” 知道为什么会这样吗?谢谢

  • 问题内容: 是否可以使用Django中的一个提交按钮提交两种不同的形式?我有一个称为“仪器”的形式和四个相等的形式“配置”。现在,我想始终提交一个配置和工具。例如instrument + config 1和instrument + config 2,并且每个配置都有自己的提交按钮。 我已经在配置表单中用一个按钮尝试过: 并调用js函数“ onclick”: 这是我在views.py中的方法: 问题

  • 问题内容: 我有一个表格。在该表格之外,我有一个按钮。一个简单的按钮,如下所示: 但是,当我单击它时,它会提交表单。这是代码: 该按钮应该做的就是编写一些JavaScript。但是,即使看起来像上面的代码一样,它也会提交表单。当我将标签按钮更改为跨度时,它可以完美工作。但不幸的是,它必须是一个按钮。有什么办法可以阻止该按钮提交表单?像例如 问题答案: 我认为这是HTML最令人讨厌的小特性。该按钮必

  • 问题内容: 单击后,我编写了以下代码以禁用网站上的提交按钮: 不幸的是,它没有发送表格。我怎样才能解决这个问题? 编辑 我想绑定提交,而不是表格:) 问题答案: 做到: 发生的事情是您实际上在完全触发该提交事件之前禁用了该按钮。 您可能还应该考虑使用ID或CLASS来命名元素,因此不要在页面上选择所有提交类型的输入。 (请注意,我使用,因此该表单在示例中并未实际提交;请在使用时将其保留。)

  • 问题内容: 好吧,我试图通过按Enter提交表单,但不显示提交按钮。我不希望尽可能地使用JavaScript,因为我希望所有功能都可以在所有浏览器上正常工作(我知道的唯一JS方式就是使用事件)。 现在,表单如下所示: 哪个效果很好。当用户按下Enter键时,提交按钮将起作用,并且该按钮在Firefox,IE,Safari,Opera和Chrome中不显示。但是,我仍然不喜欢该解决方案,因为很难知道

  • 问题内容: 我有一个Django项目,该项目在一页上具有多种形式(具有不同的标记),可以提交以产生不同的效果。在所有情况下,我都希望将用户重定向回同一页面,因此在我看来,我使用提交表单然后重定向到原始页面的模式。在至少一种情况下,两种形式之间的唯一区别是提交按钮的值。 在我看来,我有代码(这是我的视图函数第一次访问): 在模板中,第一个表单具有一个提交按钮,例如 我以为这样可以,但是当我提交该表格