2016-03-29 9 views
0

Ich habe eine "folgen" Schaltfläche auf meiner Website wie in Twitter. Aber diese Schaltfläche ist nur HTML ohne js. Ich weiß nichts über js/jquery/ajax. Kann mir jemand helfen, was soll ich tun, um dieses Formular ohne Seitenaktualisierung einzureichen? Vielen Dank.Submit ohne Aktualisierung - Django

Vorlage 'event.html':

{% if user in event.users.all %} 
     <form action="/event/{{ event.id }}/" method="GET"> 
     {% csrf_token %} 
     <input type="hidden" value="{{ event.id }}" name="remove"> 
     <input type="submit" class="btn btn-warning btn-block" value="{% trans "Remove from My Events"%}"> 
     </form> 
{% else %} 
     <form action="/event/{{ event.id }}/" method="GET"> 
     {% csrf_token %} 
     <input type="hidden" value="{{ event.id }}" name="add"> 
     <input type="submit" class="btn btn-primary btn-block" value="{% trans "Add to My Events"%}"> 
     </form> 
{% endif %} 

views.py:

def show_event(request, event_id): 
    event = get_object_or_404(Event, id=event_id) 
    user = request.user 
    if request.GET.get('add'): 
     event.users.add(user) 
     event.save() 
    if request.GET.get('remove'): 
     event.users.remove(user) 
     event.save() 
    return render(request, 'events/event.html', {'event':event, 'user':user} 
+2

Es hat keinen Sinn in einer Frage wie diese. Wenn Sie nichts über JS oder Ajax wissen, sollten Sie lernen. Es gibt viele Dokumentationen, zB auf jQuerys Website. –

Antwort

0

Zuerst lernen Javascript und JQuery und Ajax besser zu verstehen. http://www.tutorialspoint.com/jquery/
http://www.w3schools.com/jquery/

Vorlage 'event.html':

{% if user in event.users.all %} 
    <form action="/event/{{ event.id }}/" method="GET" id="event"> 
    {% csrf_token %} 
    <input type="hidden" value="{{ event.id }}" name="remove"> 
    <input type="submit" class="btn btn-warning btn-block" value="{% trans "Remove from My Events"%}"> 
    </form> 
{% else %} 
    <form action="/event/{{ event.id }}/" method="GET"> 
    {% csrf_token %} 
    <input type="hidden" value="{{ event.id }}" name="add"> 
    <input type="submit" class="btn btn-primary btn-block" value="{% trans "Add to My Events"%}"> 
    </form> 
{% endif %} 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0-beta1/jquery.min.js"></script> 
<script> 
$('#event').submit(function(e){ 
    e.preventDefault(); 
    url = $(this).attr('action') # to get url 
    data = $(this).serialize(); # for sending form data 
    $.post(url, data, function(response){ 
      # do whatever you want with response(data) 
    }) 
}) 
</script> 
+0

danke aber ich habe einen Fehler in diesem Beispiel - (index): 148 Uncaught TypeError: $ (...). Actions ist keine Funktion Was bedeutet das? – senergo

+0

@senergo Entschuldigung, ich habe die Funktion verpasst. jetzt wird es funktionieren. –

+0

@senergo es funktioniert jetzt. einmal prüfen. –

0

Es ist unmöglich, Python eine serverseitige Sprache ist, und wenn Sie Daten bearbeiten möchten, müssen Sie die Informationen an den Server senden.

Das erste Mal, dass ich das tat, sah ich dieses Video in YouTube: https://www.youtube.com/watch?v=KgnPSmrQrXI

Verwandte Themen