django表单提交后触发bootstrap模式

时间:2018-01-18 17:41:32

标签: django modal-dialog bootstrap-modal

如何在提交django表单后触发引导模式弹出?

在我的index.html模板中,我有一个像这样的标准外观模式

Dim lastCell as Range
Set lastCell = Sheets("Sheet1").Cells(Rows.Count,"K").End(xlUp)

Debug.Print "Last cell's row is: " & lastCell.Row
Debug.Print "Last cell's value is: " & lastCell.Value
Debug.Print "Last cell's address is: " & lastCell.Address

下面同一个index.html我有一个django表单

<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
        <div class="modal-dialog" role="document">
          <div class="modal-content">
            <div class="modal-header">
              <h5 class="modal-title" id="exampleModalLabel">Modal title</h5>
              <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                <span aria-hidden="true">&times;</span>
              </button>
            </div>
            <div class="modal-body">
              ...
            </div>
            <div class="modal-footer">
              <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
              <button type="button" class="btn btn-primary">Save changes</button>
            </div>
          </div>
        </div>
      </div>

在我的view.py中看起来像这样:

  {{ form.non_field_errors }}
                {% csrf_token %}
                    <ul id="robul">
                      <div class="form-group">
                        <div class="col-xs-6">
                        <li id="name" name="{{ form.name.name }}" class="form-control">{{ form.name }}</li>
                        </div>
                      </div>
                      <div class="form-group">
                        <div class="col-xs-6">
                        <li id="email" class="form-control">{{ form.email }}</li>
                      </div>
                    </div>
                      <div class="form-group">
                        <div class="col-xs-6">
                        <li id="contactmessage" class="form-control">{{ form.contactmessage }}</li>
                      </div>
                    </div>
                    </ul>

1 个答案:

答案 0 :(得分:3)

触发它的模态和JS代码生活在与Django表单提交代码不同的上下文中。当您从表单提交中返回时,渲染'index.html'基本上是新鲜的,因此它基本上等于在页面加载时显示模态。但是,也许你只想在成功提交后展示它。您需要做的是使用一些JS代码来显示页面加载的模态,并在模板渲染上下文中有一些东西来有条件地渲染它。这就是我的想法:

index.html

{% if successful_submit %}
    <script type="text/javascript">
        $(document).ready(function(){
            $("#exampleModal").modal('show');
        });
    </script>
{% endif %}

在您的视图功能中,将successful_submit上下文变量添加到您的返回:

return render(request, 'index.html', {'form': form, 'successful_submit': True})

现在,只有在<script>successful_submit时才会呈现True代码,而POST仅在成功成功{{1}}之后设置。

相关问题