LINUX.ORG.RU

Django + ajax

 , ,


0

1

Пояcните новичку на простом примере, как с помощью ajax выводить в шаблон данные? В сети инфа очень расплывчата и пестрит одними и теми же примерами, которые не проясняют ситуаци.

Использую https://github.com/yceruto/django-ajax.

Есть js:

$(".search_bt").click(function() {

      var material = $(".bt_material option:selected").text();
      var color = $(".bt_color option:selected").text();
      var size = $(".bt_size option:selected").text();

      ajaxPost('/test_ajax/',

              {"material": material, "color": color, "size": size},

              function(content){
                alert(content.bt_list[0]);
              }
      );
});

ajax.py:

@ajax
def my_view(request):
    if request.is_ajax() and request.method == 'POST':

        material = request.POST["material"]
        color = request.POST["color"]
        size = request.POST["size"]

        print(material, color, size)

        if color and material and size:

            try:
                bt_list = Bt.objects.filter(material=material).filter(color=color)
            except:
                bt_list = ""

            return render_to_response('pages/calculator.html', {"bt_list": bt_list, "ajax": True})

template:

  <span>
    {% for bt in bt_list %}
      {{ bt }}
    {% endfor %}
  </span>

Но не работет!

Через JS я могу достуть данные:

...
function(content) {
   alert(content.bt_list[0]);
}
...

Как передать данные в шаблон через ajax. Мне что через javascript выбирать блоки и втавлять туду данные? Что за бред. Поясните, плиз.



Последнее исправление: djnoob (всего исправлений: 1)

Django-ajax никогда не использовал. Если мне нужно ajax-ом рендерить шаблон, то я выношу этот кусок шаблона в отдельный файл, из вьюхи возвращаю render_to_string, на клиенте уже js вставляет отрендеренный шаблон в html.

anonymous
()
Ответ на: комментарий от djnoob

Можешь еще на клиенте использовать какой-нибудь js шаблонизатор, а из вьюхи возвращать json с данными

anonymous
()
Ответ на: комментарий от djnoob

На клиенте (это underscore template): _.template(«<div><h1 class='header'><%= header %></h1><h2 class='header2'><%= header2 %></h2><h3 class='header3'><%= header3 %></h3><h4 class='header4'><%= header4 %></h4><h5 class='header5'><%= header5 %></h5><h6 class='header6'><%= header6 %></h6><ul class='list'><% for (var i = 0, l = list.length; i < l; i++) { %><li class='item'><%= list %></li><% } %></ul></div>»);

с вьюхи возвращаеш render_to_response(json_data, content_type=«application/json»)

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.