如何以相同的形式利用两个不同动作的两个按钮?

时间:2018-12-29 15:57:30

标签: python html django forms django-forms

我有一个带有两个按钮/输入的表单。

Button1保存页面并刷新。

Button2保存页面并转到另一个URL。

Button1正在使用 type =“ submit” ,然后view.py获取数据,保存并刷新数据。

我的问题是Button2。我用 formaction =“ {%url'team_area:home'%}” 添加了它,并实际上重定向了我,但问题是它不保存数据。 Button1仍然可以正常工作。

是否可能有某种请求。在view.py中使用the_id_of_pressed_button?


如果有帮助,这里涉及我的文件:

modify_players.html

ele.style.fontFamily = papyrus

views.py

<h1>AREA SQUADRA</h1>
<form method="post" action="">
  {% csrf_token %}
  <h2>Giocatori</h2>
  {{ player_formset.management_form }}
  {% for player_form in player_formset %}
    {% if forloop.last %}
      {% if not forloop.first %}
        <input type="submit" value="Salva" formaction="{% url 'team_area:home' %}">
      {% endif %}
      <h5>Nuovo giocatore:</h5>
    {% endif %}
    {% for field in player_form %}
      {% if forloop.revcounter == 2 %}
        {{ field }}
      {% elif forloop.parentloop.last and forloop.last%}
      {% else %}
        {{ field.label_tag }} {{ field }}
      {% endif %}
    {% endfor %}
      <br>
  {% endfor %}
  <input type="submit" value="Aggiungi">
  </form>

1 个答案:

答案 0 :(得分:1)

您的评论清除了几件事。

formaction中删除input,以便两个按钮都将表单提交到同一视图。

为两个按钮提供共同的name但不同的value。然后,在您的视图中,您可以区分单击了哪个按钮。

html:

<input type="submit" name="submit_button" value="button1">
<input type="submit" name="submit_button" value="button2">

视图:

def modify_players(...):
    ...
    # save data
    ...

    submit_button = request.POST.get('submit_button')
    if submit_button == 'button1':
        # refresh page
    else:
        # redirect to some page