Модал для подтверждения удаления - PullRequest
0 голосов
/ 13 апреля 2020

У меня есть форма для создания продуктов и редактирования существующих продуктов. Я могу просто отправить изменения, но когда я добавил кнопку удаления, которая открывает модальное окно для подтверждения удаления, я столкнулся с некоторыми неожиданными проблемами.

шаблон. 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">&times;</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')             

Когда я запускаю модальный режим, я сразу же перенаправляюсь на страницу домашней страницы и вынужден нажимать назад, чтобы нажать кнопку подтверждения. Похоже, что работает, но после того, как я нажимаю удалить объект все еще там.

Это потому, что у меня есть две кнопки отправки с типом «отправить» в одной форме? (один для удаления и один для обновления изменений)

...