2017-11-13 1 views
1

Ich habe ein Problem mit Ajax und wie kann ich Informationen auf meiner HTML-Seite aktualisieren, ohne es neu zu laden.
So habe ich eine Funktion in meiner views.py Datei:Aktualisierung von Informationen auf HTML-Seite mit Ajax in Django

def index(request): 
    some stuff 
    context = { 
     some stuff 
    } 
    return render(request, "header.html", context) 

Und ich Variablen nur aus {context} in meiner header.html Datei. Und die Frage ist - Wie kann ich Indexfunktion durchführen und neue Variablen an meine header.html Datei senden, ohne sie neu zu laden?

+0

Django Template umgewandelt html so

var data = {}; $.ajax({ url: '/your-new-endpoint-url', type: 'GET', data: data, dataType: 'json', success: function(resp) { $('#changingElement').html(resp.html); } }); 

Sie können jede Art von Daten aus diesem neuen Endpunkt senden:

AJAX Sie können den HTML-Code nicht aktualisieren, ohne ihn neu zu laden, aber Sie können in der AJAX-Erfolgsfunktion etwas HTML mit Javascript ändern wie 'element.innerhtml =" new stuff "' –

+0

Wenn Sie nicht gut mit AJAX sind kann ich Ihnen sagen -in Antworten- wie man eine Variable sendet, um anzuzeigen, dann aktualisieren Sie das HTML –

Antwort

3

Erstellen Sie zuerst einen neuen Endpunkt, um die gewünschten Daten in jedem Format zu erhalten. Ich bevorzuge JSON.

New Endpunkt:

# views.py 

from django.http import JsonResponse 
def new_endpoint(request): 
    """Returns `JsonResponse` object""" 

    # you can change the request method in the following condition. 
    # I dont know what you're dealing with. 
    if request.is_ajax() and request.method == 'GET': 
     # main logic here setting the value of resp_data 

     resp_data = { 
      'html': 'stuff', 
      # more data 
     } 

     return JsonResponse(resp_data, status=200) 

Dann müssen Sie den AJAX Teil codieren diesen Endpunkts mit dem Aufruf der Methode, Daten, Header etc. und schließlich definiert die success Callback-Methode des gewünschten zu erhalten Daten. Wie immer Element der HTML-Text oder Klassennamen oder Arten ändern, usw.

Verwandte Themen