Django Несколько форм на одной странице взаимодействуют друг с другом
У меня есть страница с двумя формами. Когда я нажимаю на кнопку Update Profile
на левой форме, она также отправляет POST запрос на вторую форму, что не то, что я хочу. Я не хочу, чтобы они взаимодействовали вместе. Как я могу это сделать?
views.py
@login_required(login_url='signin')
def dashboard(request):
global user_id
data = Account.objects.filter(user=request.user)
profile_data = Profile.objects.get(user=request.user)
profile_form = ProfileForm(request.POST or None, instance=profile_data)
addaccount_form = AddAccountForm(request.POST or None)
# Update Profile Settings
if profile_form.is_valid():
print("worked")
profile_form.save()
if request.method == "POST":
if addaccount_form.is_valid():
# save account to DataBase
return HttpResponseRedirect("http://127.0.0.1:7000/dashboard/")
context = {
'data': data,
'profile_form': profile_form,
'addaccount_form': addaccount_form,
}
return render(request, "main/dashboard.html", context)
dashboard.html
<form action="" method="POST">
{% csrf_token %}
{{profile_form}}
<button type="submit" class="updatebut">Update Profile</button>
</form>
<form action="" method="POST">
{% csrf_token %}
{{addaccount_form}}
<button type="submit" class="addbut">Add Account</button>
</form>
Вы можете добавить имя к каждой из ваших кнопок отправки (например, name="addaccount" и name="updateprofile")
В вашем представлении добавьте следующее:
if 'addaccount' in request.POST: ---делать addacount elif 'updateprofile' в request.POST: ---делать обновление профиля
Быстрая и грязная!
Вы можете проверить, какая форма в вашем запросе
if 'profile_form' in request.POST:
profile_form = ProfileForm(request.POST or None, instance=profile_data)
if profile_form.is_valid():
print("worked")
profile_form.save()
elif 'addaccount_form' in request.POST:
addaccount_form = AddAccountForm(request.POST or None)
if addaccount_form.is_valid():
# save account to DataBase
return HttpResponseRedirect("http://127.0.0.1:7000/dashboard/")