2017-11-08 3 views
0

Guten Tag! Ich verzeihe Vergebung, ich bin Null in der Programmierung. Aber ich möchte lernen. Ich muss Daten mit der POST-Methode übertragen, ohne die Seite zu aktualisieren. Wie sieht das JavaScript und views.py durch django aus?Empfangen von Daten vom Server ohne Aktualisierung der Seite

<form class="form-horizontal" role="form" method="post" id="lol"> 
      <div class="form-group"> 
      <label for="" class="col-sm-2 control-label">ФИО</label> 
       <div class="col-sm-4"> 
      <input name="firstname" class="form-control" placeholder="ФИО"> 
       </div> 
      </div> 
      <div class="form-group"> 
      <label for="" class="col-sm-2 control-label">Шифр Группы</label> 
       <div class="col-sm-4"> 
      <input name="Code" class="form-control" placeholder="Шифр Группы"> 
       </div> 
      </div> 
      <div class="form-group"> 
      <label for="" class="col-sm-2 control-label">Пол</label> 
       <div class="col-sm-4"> 
      <input name="Pol" class="form-control" placeholder="М или Ж"> 
       </div>   </div> 
      <div class="form-group"> 
      <label for="" class="col-sm-2 control-label">Семейное положение</label> 
       <div class="col-sm-4"> 
      <input name="Floor" class="form-control" placeholder="0 или 1"> 
       </div> 
      </div> 
      <div class="form-group"> 
      <label for="" class="col-sm-2 control-label">Номер комнаты</label> 
       <div class="col-sm-4"> 
      <input name="Room" class="form-control" placeholder="Номер комнаты"> 
       </div> 
       </div> 
    <div class="form-group"> 
    <div class="col-sm-offset-2 col-sm-10"> 
     <button type="submit" class="btn btn-default">Войти</button> 
    </div> 
    </div> 
</form> 
<div class="examples"> 

    <script language="javascript" type="text/javascript"> 
    </script> 

    <div class="results">Ждем ответа</div> 

    @csrf_exempt 
def polls(request, form=None): 
    if request.method == 'POST' and form.is_valid(): 
     pass 
    else: 
     return render(request, 'base.html') 
+3

verwenden Ajax Anrufe. Klicken Sie auf die Schaltfläche (Typ = Schaltfläche), klicken Sie auf, rufen Sie die Daten ab, senden Sie sie an eine Back-End-Route, führen Sie die gewünschten Aktionen aus (z. B. db), geben Sie 200 oder 400 zurück. Wenn erfolgreich, führen Sie die Aktion aus. Führen Sie je nach dem zurückgegebenen Fehler einen anderen Aktionssatz aus. Verwenden Sie type = button, damit Sie das Formular nicht beim Klicken abschicken. Wenn nicht, können Sie submit aber preventDefault verwenden. Ich habe keine Erfahrung in Django, also werde ich nicht ein Beispiel für den Fall schreiben, dass ich es falsch mache, aber aus dem Fluss, den ich Ihnen gegeben habe, sollte Ihnen helfen, Ihre Suche einzugrenzen – elanor

+1

Einrücken Sie auch Ihre HTML richtig codieren. Obwohl HTML keine auf Einrückungen basierende Sprache ist, halte ich es immer noch für sehr nützlich, dem richtigen Einzug für HTML zu folgen, da Sie damit fehlende schließende Tags schnell identifizieren können. – elanor

+0

Willkommen bei SO. Bitte nehmen Sie sich die Zeit, [ask] und die darin enthaltenen Links zu lesen. – wwii

Antwort

0

in Html-Seite erste Änderung Art "Войти" -Schaltfläche von "Eintragen" auf "Button"

<div class="col-sm-offset-2 col-sm-10"> 
    <button type="submit" id="submit_button" class="btn btn-default">Войти</button> 
</div> 

id tag an alle Eingabeelemente hinzufügen. zum Beispiel

<input name="firstname" id="firstname" class="form-control" placeholder="ФИО"> 
<input name="Code" id="Code" class="form-control" placeholder="Шифр Группы"> 

Dann fügen Sie Skript in HTML-Seite

<script type="text/javascript"> 
    $('#submit_button').click(function(){ 

     $.ajax({ 
      url: '/submit/', 
      data: { 
      'firstname': $("#firstname").val(), 
      'Code': $("#Code").val(), 
      // and all other input element 

      }, 
      type: 'post', 
      cache: false, 

      success: function (data) { 
      if (data.status) 
      { 
      alert('Post method'); 
      } 
      else{ 
       alert('error') 
      } 
      } 

     }); 


    }); 
</script> 

Dann diese Zeile hinzufügen urls.py Datei von django

urlpatterns = [ 

    url(r'',include('YourAppName.urls')), 
] 

Dann erstellen urls.py Datei in Ihrer Anwendung zu projizieren Verzeichnis und fügen hinzu

from django.conf.urls import url 
from . import views 

urlpatterns = [ 
    url(r'^submit/', views.get_ajax_request, name='ajaxPost'), 
] 

In Sicht wird Ihr Code wie

import json 
from django.shortcuts import HttpResponse 
from django.core.serializers.json import DjangoJSONEncoder 

def get_ajax_request(request): 

    room = request.POST.get('Room') # get html element value by name tag of element 
    ############## 
    Your Operation 
    ############## 

    response = {'status':True,'msg':'Success'} 
    return HttpResponse(json.dumps(response, cls=DjangoJSONEncoder)) 
Verwandte Themen