У меня есть форма для создания продуктов и редактирования существующих продуктов. Я могу просто отправить изменения, но когда я добавил кнопку удаления, которая открывает модальное окно для подтверждения удаления, я столкнулся с некоторыми неожиданными проблемами.
шаблон. html
<div class="container-fluid">
<form enctype="multipart/form-data" method="POST">
{% csrf_token %}
{{form|crispy}}
{{form.errors}}
<button type="submit" class="btn btn-primary btn-block"><i class="fa fa-upload"></i> Upload</button>
{% if instance %}
<button class="btn btn-danger btn-block" data-toggle="modal" data-target="#exampleModalCenter"><i
class="fa fa-trash"></i> Delete</button>
{% endif %}
</form>
</div>
<div class="m-4">
{% for product in products %}
<a href="{% url 'main:update_product_view' slug=product.slug %}">
<h2>{{product.product_title}}</h2>
</a>
{% endfor %}
</div>
{% if instance %}
<div class="modal fade" id="exampleModalCenter" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle"
aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLongTitle">Confirm Action</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
Are you sure you want to delete {{instance.product_title}}?
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<a href="{% url 'main:delete_product_view' instance.slug %}"><button type="button"
class="btn btn-danger"><i class="fa fa-trash"></i> Delete</button></a>
</div>
</div>
</div>
</div>
{% endif %}
views.py
def create_product_view(request):
if request.method == "POST":
form = CreateProductForm(request.POST, request.FILES)
if form.is_valid():
product = form.save(commit=False)
product.save()
return redirect('main:homepage_view')
else:
form = CreateProductForm
context = {
"title": "Create - Product",
"form": form,
}
return render(request=request, template_name="main/create/create_product.html", context=context)
def update_product_view(request, slug):
instance = get_object_or_404(Product, slug=slug)
if request.method == 'POST':
form = CreateProductForm(
request.POST, request.FILES, instance=instance)
if form.is_valid():
product = form.save()
return redirect('main:homepage_view')
else:
form = CreateProductForm(instance=instance)
context = {
"title": "Update - Product",
"form": form,
"instance": instance,
}
return render(request=request, template_name="main/create/create_product.html", context=context)
def delete_product_view(request, slug):
instance = get_object_or_404(Product, slug=slug)
if request.method == 'POST':
instance.delete()
return redirect('main/index.html')
Когда я запускаю модальный режим, я сразу же перенаправляюсь на страницу домашней страницы и вынужден нажимать назад, чтобы нажать кнопку подтверждения. Похоже, что работает, но после того, как я нажимаю удалить объект все еще там.
Это потому, что у меня есть две кнопки отправки с типом «отправить» в одной форме? (один для удаления и один для обновления изменений)