Ich bin neu in Django und ich habe eine Menge Probleme mit den Formularen.Django: Wie mehrere "fügen Sie ein weiteres Feld" Schaltflächen in einem Formular haben
Ich mache eine Berechnung-basierte Tool und ich muss in der Lage sein, eine beliebige Anzahl von Eingaben zu haben.
Als ein wirklich einfaches Beispiel, sagen wir mal, ich möchte einen Rechner erstellen, der eine beliebige Anzahl von Eingaben summiert und subtrahiert. Jede hinzuzufügende oder zu subtrahierende Zahl befindet sich in einem eigenen Nummernfeld. Sowohl die Liste der "addierenden" Felder als auch die Liste der "subtrahierenden" Felder hat ihre eigene "addiere andere Feld" Taste.
Für den Anfang, hier ist etwas, das zwei Eingaben hinzufügt (da ich nicht herausfinden, wie man sogar 1 "addieren Sie eine weitere Feldtaste" oder verstehen Sie die answer to it).
views.py
from __future__ import unicode_literals
from django.http import HttpResponse, HttpResponseRedirect
from django.shortcuts import render
from django.views.decorators.csrf import csrf_exempt
from .forms import AddForm
def _from_str(s):
try:
s = int(s)
except ValueError:
try:
s = float(s)
except ValueError:
pass
return s
@csrf_exempt
def web_adder(request):
if request.method == 'POST':
form = AddForm(request.POST)
# form = MyForm(request.POST, extra=request.POST.get('extra_field_count'))
if form.is_valid():
return web_adder_out(request, _from_str(form.cleaned_data['addend0']), _from_str(form.cleaned_data['addend1']))
else:
form = AddForm()
# form = MyForm()
return render(request, 'addercontent.html', {'form': form})
def web_adder_out(request, a, b):
return render(request, 'addercontentout.html', {'content':[a + b]})
forms.py
from django import forms
class AddForm(forms.Form):
addend0 = forms.CharField(label='first addend', max_length=100)
addend1 = forms.CharField(label='second addend', max_length=100)
addercontent.html
{% block content %}
<p>This is a web adder</p>
<form action="" method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit" class="btn btn-default">Enter</button>
</form>
{% endblock %}
addercontentout.html
{% block content %}
{% for c in content%}
Result: {{c}}
<br>
<a href="/" class="btn btn-default">Return</a>
{% endfor %}
{% endblock %}
Warum verwenden Sie '{% csrf_token%}', wenn Sie 'csrf_exempt' Decorator setzen? – ShadowXsc
Weil ich keine Ahnung habe was ich mache. Ich werde es entfernen. – Zoojay