簡體   English   中英

如何以相同的形式利用兩個不同動作的兩個按鈕?

[英]How to make use of two buttons with two different actions in the same form?

我有一個具有兩個按鈕/輸入的表單。

Button1保存頁面並刷新。

Button2保存頁面並轉到另一個URL。

Button1正在使用type =“ submit”處理 ,然后view.py接收數據,保存它們並刷新數據。

我的問題是與Button2。 我用formaction =“ {%url'team_area:home'%}”添加了它,並實際上重定向了我,但問題是它不保存數據。 Button1仍然可以正常工作。

在view.py中可以使用某種request.the_id_of_pressed_button嗎?


如果有幫助,請聯系我的文件:

modify_players.html

<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>

views.py

@login_required(login_url="/accounts/login/")
def modify_players(request):
    if request.user.team is not None:
        PlayerFormSet = modelformset_factory(Player, form=PlayerForm, extra=1, can_delete=True,)

        if request.method == "POST":
            player_formset = PlayerFormSet(request.POST, request.FILES, queryset=Player.objects.all().filter(team=request.user.team),)
            for player_form in player_formset:
                if player_form.is_valid():
                    player = player_form.save(commit=False)
                    player.team = request.user.team
            if player_formset.is_valid():
                player_formset.save()

            return redirect('team_area:modify_players')
        else:
            player_formset = PlayerFormSet(queryset=Player.objects.all().filter(team=request.user.team))
        return render(request, 'team_area/modify_players.html', {'player_formset': player_formset})
    else:
        return redirect('team_area:home')

您的評論清除了幾件事。

input刪除formaction ,以便兩個按鈕都將表單提交到同一視圖。

給這兩個按鈕起一個共同的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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM