我是新來的Django和我有很多的麻煩與形式。Django的:如何有多個「添加一個字段」按鈕的形式
我正在做一個基於計算的工具,我需要能夠有輸入任意號碼。
作爲一個非常簡單的例子,讓我們說我想要一個計算器,將總結和減去任意數量的輸入。每個要添加或減去的數字都在其自己的數字字段中。 「添加」字段列表和「減法」字段列表都有自己的「添加其他字段」按鈕。對於初學者,這裏增加了兩個輸入(因爲我不知道如何實現1「添加另一個字段按鈕」或理解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 %}
爲什麼你使用'{%csrf_token%}'如果你設置'csrf_exempt'裝飾? – ShadowXsc
因爲我不知道我在做什麼。我會刪除它。 – Zoojay