Einfacher Taschenrechner mit HTML-Formularen in python-django
Unten ist mein html-Formular:
<form id="calci_form" method="get" action="#">
<input type="hidden" name="prev_val" value="{{prev_val}}"></input>
<input type="hidden" name="curr_val" value="{{curr_val}}"></input>
<input type="hidden" name="op_sign" value="{{opsign}}"></input>
<div id="calculator">
<table id="tableCalci">
<tr id="row1">
<td colspan="4"><input type="text" value="0" class="display" name="user_input">{{result}}</input></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr class="hover">
<td><button id="7" name="numval" value="7" type="submit"></button></td>
<td><button id="8" name="numval" value="8" type="submit"></button></td>
<td><button id="9" name="numval" value="9" type="submit"></button></td>
<td><button id="plus" name="sym" type="submit" value="add">+</button>
</td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr class="hover">
<td><button id="4" name="numval" value="4" type="submit"></button></td>
<td><button id="5" name="numval" value="5" type="submit"></button></td>
<td><button id="6" name="numval" value="6" type="submit"></button></td>
<td><button id="minus" name="sym" value="minus" type="submit">−
</button></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr class="hover">
<td><button id="1" name="numval" value="1" type="submit"></button></td>
<td><button id="2" name="numval" value="2" type="submit"></button></td>
<td><button id="3" name="numval" value="3" type="submit"></button></td>
<td><button id="times" name="sym" value="times" type="submit">×
</button></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr class="hover">
<td> </td>
<td><button id="0" name="numval" value="0" type="submit"></button></td>
<td><button id="equal" name="sym" type="submit">=</button></td>
<td><button id="divide"; name="sym" type="submit" value="divide">÷
</button></td>
</tr>
</table>
</div>
</form>
Views.py Datei:
if 'sym' in request.GET:
if request.GET['sym'] == 'add':
first=request.GET['result']
opsign='\+'
return render(request,'calculator.html',{'result':first,'prev_val':first,'curr_val':second,'opsign':opsign})
elif request.GET['sym'] == '=':
if 'prev_val' in request.GET and request.GET['prev_val']:
first=request.GET['prev_val']
if 'result' in request.GET and request.GET['result']:
second=request.GET['result']
try:
result=add(10,20)
except ValueError:
err="Error: Incorrect Number"
except ZeroDivisionError:
err="Error: Division by zero"
return render(request,'calculator.html',{'result':result,'error':err})
else:
return render(request,'calculator.html',{'error':'No Operation selected'})
Geforderte Lösung: Wenn ich auf die "Plus" - Taste oder "Gleich" - Taste, die oben erwähnte Funktion nicht aufrufen an alle. Der controller ist nicht bestanden, der von der HTML-Seite auf der oben genannten Funktion in der views.py Datei. Wo bin ich, was den Fehler und warum der controller nicht übergeben die Kontrolle an die Funktion. Jede Hilfe ist willkommen.
- Für den Anfang denke ich, dass Sie senden eine POST und Kontrolle für BEKOMMEN.
- Haben Sie Ihre Ansicht erstellt oder sind die, wenn ' s im Umlauf?
Du musst angemeldet sein, um einen Kommentar abzugeben.
ist Ihre Ansicht immer genannt, oder du bist nicht in der Lage, jedes Ergebnis zu bekommen.
Einer Sache, auch dann, wenn die Anzeige erhält die Kontrolle, ist Sie sicher, dass Ihr code wird unterbrochen, wenn
sym
ist =denn es wird behandelt in der ersten
if
und es nicht handhaben =Wenn Ihr form ist nicht eingereicht, ich denke, Sie müssen behandeln Sie es mit Hilfe von Javascript und AJAX.
In meinem view.py Datei, die ich geschrieben hatte, die Operationen wie add,sub,mul am Ende. So, ich nur setzen Sie Sie am Anfang der Datei unter import. Es arbeitete.
Views.py Datei: