[英]How do I in Flask get what of two buttons in same form has been clicked to perform different actions?
[英]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.