2017-01-31 6 views
1

ich in meiner Vorlage haben:Django, einen Wert aus einer POST bekommen

This is passed by {{form}} 

    <form action="" method="POST"> 
     Inicio: <input type="text" id="start"> 
     <input type="submit" value="Sned" > 
    {% csrf_token %} 
    </form> 

Dann in der views.py

def test(request): 

    if request.method != 'POST': 
     context = {'form': 'by GET'} 
     return render(request, 'test.html', context) 
    else: 

     if 'start' in request.POST: 
      start = request.POST['start'] 
     else: 
      start = False 


    context = {'form': start} 
    return render(request, 'test.html', context) 

Es scheint, dass immer False zurückgeben

Wenn ich nicht Überprüfen Sie die Existenz des Schlüssels Ich habe diesen Fehler:

MultiValueDictKeyError 

Und die erropage sagt: " 'start'" (single und doppelte Anführungszeichen)

Antwort

4

id für JavaScript- und CSS-Zwecke gedacht. Für Variablen, die serverseitig wichtig sind, sollten Sie das Tag name verwenden.

<input type="text" id="start" name="start"> 
+0

Vielen Dank :) – Alexev

+0

Sie können es als richtige Antwort markieren – hspandher

+0

Auch tat es aber irgendwie ist es immer noch nicht so grün markiert und wenn ich versuche, es wieder zu tun, sagt sie Ill 10 Minuten nach 10 – Alexev

2

Namen

<input type="text" name="start" id="start"> 
3

Sie müssen ein Namensattribut in Ihrer Eingabe hinzufügen, wenn Sie also die POST-Daten erhalten, wird es gefunden.

<form action="" method="POST"> 
    Inicio: <input type="text" id="start" name="start"> 
    <input type="submit" value="Sned" > 
    {% csrf_token %} 
</form> 

Auch empfehle ich Ihnen die folgende Änderung Ihrer Ansicht nach zu tun:

ersetzen

request.POST['start'] 

von:

request.POST.get('start') 

Also, wenn das Feld nicht gefunden wird, es wird mit einem None Wert neu zugewiesen.

+0

Vielen Dank – Alexev

+0

Mein Vergnügen, bitte upvote meine Antwort, wenn es geholfen hat. –

Verwandte Themen