ajax возврат ответа с функцией для - PullRequest
0 голосов
/ 01 мая 2020

Можете ли вы сказать мне, как я могу заменить код html на функцию 'для от django'?

$.ajax({                                                                                                                           
    url: url,
    data: $('#FormSite').serialize(), 
    type: "POST",
    async:false,
    success: function(response) {
        $($("#Pic").first()).replaceWith($(response['Pic']));
        $("#HeaderWpis").text(response['h1']);
        $("#WpisChild").html("<div id='WpisChild'> {% for News in Messags %} <p>{{ News.title }}</p> </div>");
    },
    error: function(data)
    {
        alert('Bad connection');
        console.log(data);
    }

});

Когда я это сделал, я получил {% для%} из третьего div 'WpisChild' в виде текста. Функция не выполняет на странице. Не могли бы вы сказать мне, почему?

1 Ответ

0 голосов
/ 01 мая 2020

Язык шаблона Django обрабатывается при доступе к вашим представлениям, поэтому JQuery не может его интерпретировать. Вот два предложения:

  1. Создайте HTML с языком шаблонов Django с помощью функции render () в вашем файле views.py. Вам нужно будет создать новый шаблон с этим сегментом HTML и направить вызов AJAX в новое представление. Сообщения будут передаваться в шаблон в качестве контекста, и {% for%} l oop будет работать. Ответом будет полностью построенный HTML, который вы затем можете .append () к выбранному div.
def get_messages(request):
    if request.method == 'POST':
        # do whatever with your request, fetch your messages

        context = {
            'Messages': messages
        }
        return render(request, 'message-template.html', context)
$("#WpisChild").append(response)
Включите данные Сообщения в ваш существующий ответ, l oop через список и добавьте каждый из них в качестве элемента в div. Этот вариант может быть предпочтительным, если в вашем ответе есть другие данные.
response['Messages'].forEach(function(news) {
    $("#WpisChild").append('<p>' + news.title + '</p>')
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...