2016-11-04 2 views
1

Ich benutze Django Templates und in einem bestimmten, ich lade ein paar divs mit Inhalt mit zwei AJAX-Anfragen, um die Dinge schneller zu machen.Django: Vorlage laden nach AJAX Anfrage

Die Hauptvorlage, die ich spreche, enthält eine Ansicht am Ende, die eigentlich meist JS ist. Die Sache ist, dass JS von den Daten abhängig ist, die in diesen AJAX-Anfragen geladen werden, so dass die Skripte von der Vorlage gerendert werden, bevor die notwendigen Daten im HTML sind.

Eine schnelle Regelung:

{# main template #} 
{% block content %} 
    <div id="main">...</div> 
    <div id="load-data-1"></div> 
    <div id="load-data-2"></div> 
{% endblock %} 

{% block js }% 
    {% include 'template_with_scripts.html' %} 
{% endblock %} 

template_with_scripts.html

<script> 
    $.get(url1, function(data) { $('#load-data-1').html(data); }); 
    $.get(url2, function(data) { $('#load-data-2').html(data); }); 
</script> 

{% include 'scripts_related_with_ajax_loaded_data.html' %} 

Also, was ich tun müssen, um die Skripte nach die AJAX-Anforderungen gemacht werden laden, wie in this answer erläutert.

Aber meine Frage ist, wie man diese scripts_related_with_ajax_loaded_data.html Datei lädt, nachdem die AJAX-Anrufe beendet sind. Soll ich eine neue Route erstellen und anzeigen, um den gerenderten Kontext als HTML zurückzugeben? Scheint komisch und ein bisschen Overkill. Gibt es ein Tag, das nur die übergebene Vorlage rendert, sodass ich sie an den HTML-Code anhängen kann?

Antwort

1

Eine Sache, die Sie über Django-Vorlagen verstehen sollten, ist, dass sie von Ihrem Server gerendert werden, sodass keine Vorlagen-Tags auf der Client-Seite funktionieren. Also ja, Sie sollten einen separaten Endpunkt erstellen und Daten über Javascript abrufen.