Есть ли способ выполнить теги django, отправленные из внешнего файла javascript после загрузки страницы - PullRequest
0 голосов
/ 11 мая 2019

У меня есть страница, где я использую автозаполнение, чтобы получить отели из базы данных, затем попробуйте обновить гостиницу, найденную в приложении django, но я сталкиваюсь с проблемой, поскольку пытаюсь выполнить необработанные теги django из javascript после загрузки страницы, которая являетсяс помощью jquery выберите код, с которым я работаю сейчас, здесь

function updateContent(id, place){

var html_cont = '<div class="hotel{{place.id}} panel lastminute4"'+
         ' style="margin:10px; padding:10px; text-align:left; padding-bottom:0px;">'+
        ' {% with '+ id +'|get_hotel as sel_hotel %}'+
        ' <h5 style="font-weight:900; text-transform:uppercase;">{{sel_hotel.hotel_name}}</h5>'+
        ' {% with 4|get_rooms as hotel_rooms%}'+
        ' {% for room in hotel_rooms %}'+
        ' <h6>{{room.title}}  *ksh. <span style="color:green;">{{room.amount}}</span></h6>'+
        ' <button class="btn btn-default btn_minus" data-target="htl_{{place.id}}_{{room.id}}"'+
                'style="display:inline;" formtarget="cost_{{place.id}}_{{room.id}}">&minus; room</button>'+
        ' <input type="number" class="form-control" min="0" value="0" formtarget="{{room.amount}}"'+
               ' id="htl_{{place.id}}_{{room.id}}" readonly style="width:60px; background:white; display:inline;">'+
        '<button class="btn btn-default btn_add" data-target="htl_{{place.id}}_{{room.id}}"'+
                ' style="display:inline;" formtarget="cost_{{place.id}}_{{room.id}}">&plus; room</button>'+
         '<b id="cost_{{place.id}}_{{room.id}}" style="font-size:15px;"> = Ksh.0</b>'+
        '{% endfor %}'+
        '{% endwith %}'+
        '{% endwith %}'+
    '</div>';
    div_id = "#append_hotel"+ place;
    $(div_id).append(html_cont);
}

Я ожидаю получить выполненные теги, отображаемые в шаблоне, а не необработанные теги django с фигурными скобками и знаком%

1 Ответ

0 голосов
/ 11 мая 2019

спасибо Daniel Roseman за идею ajax. Мне удалось это сделать, вызвав функцию ajax для извлечения некоторого шаблона htmnl, который обновляется вместе с содержимым, и добавления его в область, которую я хотел. Я сделал вид django, подобный этому

def get_hotel(request,id, pk):
    place = Location.objects.get(id=id)
    hotel = Hotels.objects.get(id=id)

    context = {
        'rooms':hotel.rooms.all(),
        'hotel':hotel,
        'place':place,
    }
    html = render_to_string("home/hotel_rooms.html", context)
    return HttpResponse(html)

Это было представление для обновления содержимого в шаблоне home / hotel_rooms.html Затем я создал этот шаблон

<div class="hotel{{place.id}} panel lastminute4"
     style="margin:10px; padding:10px; text-align:left; padding-bottom:0px;">
    <h5><a style="font-weight:900; text-transform:uppercase;" href="" data-toogle="tooltip">{{hotel.hotel_name}}</a>
    {% for room in rooms %}
    <h6>{{room.title}} *ksh. <span style="color:green;">{{room.amount}}</span></h6>
    <button class="btn btn-default btn_minus" data-target="htl_{{place.id}}_{{room.id}}"
            style="display:inline;" formtarget="cost_{{place.id}}_{{room.id}}">&minus; room
    </button>
    <input type="number" class="form-control" min="0" value="0" formtarget="{{room.amount}}"
           id="htl_{{place.id}}_{{room.id}}" readonly style="width:60px; background:white; display:inline;">
    <button class="btn btn-default btn_add" data-target="htl_{{place.id}}_{{room.id}}"
            style="display:inline;" formtarget="cost_{{place.id}}_{{room.id}}">&plus; room
    </button>
    <b id="cost_{{place.id}}_{{room.id}}" style="font-size:15px;"> = Ksh.0</b>
    {% endfor %}

</div>

, а затем в моем ajax

function updateContent(id, pk){
    $.ajax({
        type: 'GET',
        url: '/get_hotel/' + id +'/'+ pk,
        data: id,
        datatype: "json",
        success: function(data){
             div_id = "#append_hotel"+ pk;
             $(div_id).append(data);
        },//success
        error: function(){
            console.logs("AJAX - failure.");
        }//error
    });

};

Большое вам спасибо за эту работу, как зачарование

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...