11
Фев
2017

Как обновить форму с помощью Ajax в Django?

Имеется форма с 2 видимыми полями. Данные с полей передаются на сервер, обрабатываются, и после того как сервер отправляет нужные параметры, форма обновляется и становятся видимыми уже не 2 поля, а 5, 1 из которых будет сгенерирован полученной информацией с сервера. Проблема заключается в том, что не получается на landing page, куда из другого файла вставляется кусочек шаблона с кодом, обновить форму. Из views.py пересылаю этой командой

    return render(request, 'form.html', context)

На клиентской части обрабатываю так:

jQuery('#but_check').on('click', function() {
jQuery.ajax({
    url: "/",
    type: 'POST',
    data: {
        'object1': $("#id_object1").val(),
        'object2': $("#id_object2").val(),
        'csrfmiddlewaretoken':$('input[name=csrfmiddlewaretoken]').val()

    },
    dataType: "html",
    cache: false,
    success: function(data) {
        $('#form_replace').html(data);
    },
    error: function(){
    alert("Ошибка!");
    }
});

Форма командой:

  $('#form_replace').html(data);

заменяется, но исходя из того, что в файле, который передает джанго, есть команда

  {% extends 'index.html' %}

нужная форма заменяется целой страницей. Перепробовал кучу методов обновления формы. Через просто "httpresponse" нельзя, ибо мне нужно передать словарь. Насчет использования Json я задумывался, но Django и так неплохо передает параметры. Важно их лишь прикрепить к полям новой формы и заменить на старую, т.е. обновить. Со стороны клиента пробовал как change(), load(), ничего не дало. Пытался изъять ненужные селекторы полученного шаблона, но тогда при повторной отправке форма работать не будет. Скажите, что я упустил? Как мне обновить форму в шаблоне сайта landing page при этом передав туда данные словаря, сгенерированные во views.py?

Источник: https://ru.stackoverflow.com/questions/626442/%D0%9A%D0%B0%D0%BA-%D0%BE%D0%B1%D0%BD%D0%BE%D0%B2%D0%B8%D1%82%D1%8C-%D1%84%D0%BE%D1%80%D0%BC%D1%83-%D1%81-%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E-ajax-%D0%B2-django

Share

Тебе может это понравится...