@bond_1013
Начинающий веб-разработчик

Как генерировать часть страницы заново Django?

Пытаюсь добавлять товар в корзину через ajax, без обновления страницы, с помощью форума получилось, но вот как обновлять данные в модальной корзине не могу понять, пытался просто вставить код заново, но он не генерируется джанго, Как можно заставить джанго сгенерировать джанго заново часть странички, или как можно получить через ajax данные и вставить их в нужные блоки?
$( ".add_to_cart" ).submit(function(e,addr) {
        e.preventDefault();
        var quantity = $(this).find('select option:selected').val();
        console.log(quantity);
        $.ajax({
        type: "POST",
        url: String($('.add_to_cart').data("action")),
        data: {csrfmiddlewaretoken: csrftoken, quantity: quantity
            },
        success: function() {
            $('.main-offer_list').html(`{% for item in cart %}
        {% with product=item.product %}
        <div class="main-offer_list-item">
            <div class="main-offer_list-info">
                <div class="main-offer_list-title">
                    {{ product.name }}
                </div>
                <div class="main-offer_list-calc">
                    {{ item.quantity }}
                </div>
            </div>
            <img src="{{ product.image.url }}" alt="">
            <div class="main-offer_list-close">
                <a class="delete-btn" data-delete="{% url 'cart:cart_remove' product.id %}"><img class="img-svg" src="{% static 'img/close.svg' %}" alt=""></a>
            </div>
        </div>
        {% endwith %}
        {% endfor %}`);
        } 
      });
});
  • Вопрос задан
  • 515 просмотров
Решения вопроса 1
@pyHammer
Александр Бондаренко все достаточно просто.
1. Вы должны создать шаблон - блок, который бы будете вставлять на странице рендеринга корзины через тег {% include 'blocks/cart_items.html' %} например.
2. Создаете view который будет рендерить шаблон только blocks/cart_items.html в него передаете данные о корзине. По сути все что у вас в $('.main-offer_list').html( нужно выделить в отдельный файл шаблона.
3. Вставляете получеый код в нужное место.
<div class="cart-wrap">
    {% include 'blocks/cart_items.html' %}
</div>

$('.cart-wrap').html( 'тут дата которая пришла с сервера' );

Преимущество такого подхода в том, что у вас используется один и тот же шаблон, и чтобы изменить его не придётся править js, достаточно подправить в 1 месте, то есть сам подключаемый в корзину шаблон
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы