2017-05-10 4 views
0

Ich habe eine Liste von Zonen, identifiziert durch ID (Integer). Wie kann ich die Zone erhalten, die die Postanforderung generiert hat?Django - Wert von POST-Anfrage

manual.html

{% if zone_list %} 
    <ul> 
     {% for z in zone_list %} 
      <b><p>{{z.name}}</p></b> 
      <form action="" method="post"> 
       {% csrf_token %} 
       <input type="submit" name="{{z.id}}" value="ON"/> 
       <input type="submit" name="{{z.id}}" value="OFF"/><br> 
       <br> 
       <label>Tiempo</label>: 
       <input type="integerfield" name="Tiempo"> 
       <input type="submit" name="{{z.id}}" value="Start"> 
      </form> 
     {% endfor %} 
    </ul> 
{% endif %} 

Im views.py ich etwas, um die 1 zu ändern, dass die Zone

views.py

def manual(request): 
    if request.POST.has_key('1'): 
     z = Zone.objects.get(id = 1) 
     keyword = request.POST.get("1","") 
     if keyword == "ON": 
      #do something 
     if keyword == "OFF": 
      #do something 
     if keyword == "Start": 
      #do something 
    zone_list = Zone.objects.all() 
    context = {'zone_list':zone_list} 
    return render(request, 'irrigation_controller/manual.html', context) 
+0

erstellen [Modelform] (https://docs.djangoproject.com/en/1.11/topics/forms/modelforms/) für eine Zone und dann mit [ modelformset] (https://docs.djangoproject.com/en/1.11/topics/forms/modelforms/#model-formsets), um eine Reihe von Formularen zu erstellen. Dann können Sie auf diesem Formular in Ihren Ansichten iterieren und Wert eins nach dem anderen erhalten – Taranjeet

+0

Oder Sie können ein verstecktes Eingabefeld hinzufügen, das die ID der Zone enthält und diese dann aus 'request.POST' herausziehen. – themanatuf

+0

@themanatuf Danke für die Hilfe, ich habe das Problem mit einem versteckten Eingabefeld gelöst –

Antwort

0

dynamisch darstellt Ich habe das Problem gelöst. Wie der Mensch sagte, benutzte ich ein verstecktes Eingabefeld mit der zone_id.

manual.html

{% if zone_list %} 
    {% for z in zone_list %} 
     <b><p>{{z.name}}</p></b> 
     <form action="" method="post"> 
      {% csrf_token %} 
      <input type="hidden" name="zone_id" value="{{z.id}}"> 
      <input type="submit" name="order" value="ON"/> 
      <input type="submit" name="order" value="OFF"/><br> 
      <br> 
      <label>Tiempo</label>: 
      <input type="integerfield" name="Tiempo"> 
      <input type="submit" name="order" value="Start"> 
     </form> 
    {% endfor %} 
{% endif %} 

Und im Blick las ich die zone_id und die Reihenfolge.

views.py

def manual(request): 
if request.POST.has_key('zone_id'): 
    z = Zone.objects.get(id = request.POST.get("zone_id","")) 
    keyword = request.POST.get("order","") 
    if keyword == "ON": 
     z.irrigation_on() 
    if keyword == "OFF": 
     z.irrigation_off() 
    if keyword == "Start": 
     tiempo = request.POST['Tiempo'] 
     tiempo = float(tiempo) 
     irrigation_time.delay(z.id, tiempo) 
zone_list = Zone.objects.all() 
context = {'zone_list':zone_list} 
return render(request, 'irrigation_controller/manual.html', context) 
Verwandte Themen