我是Django的新手,希望建立一个带有响应的快速表单。
我正在尝试构建一个表单,当用户点击提交时,要求用户输入他的名字,页面应该重新加载并且只是说"你好。
urls.py
class Question1Form(forms.Form):
n = forms.CharField(max_length=100,
widget=forms.TextInput(
attrs={'placeholder': 'Number', 'class': 'form-control'}))
views.py
def home(request):
if request.method == 'POST':
form = Question1Form(request.POST)
if form.is_valid():
result = [Question1Form.ans()]
return HttpResponse(Question1Form.n)
else:
form = Question1Form()
return render(request, 'index.html', {'form': form})
的index.html
<form action="" method="post" class="form">
{% csrf_token %}
{{ form.non_field_errors }}
<div class="form-row form">
<div class="col-sm-4">
{{ form.n.errors }}
{{ form.n }}
</div>
<input class="btn btn-primary" type="submit" value="Submit" />
</div>
</form>
那么代码如何
答案 0 :(得分:0)
if request.method == 'POST':
form = Question1Form(request.POST)
if form.is_valid():
result = form.save()
return render(request, 'index.html', {'created': True})
然后在您的HTML中,您可以说
{% if created %}
<p> Hello </p>
{% endif %}
编辑我现在看到您的表单中没有任何操作。
因此,您需要在URLS.py中指向该视图。 例如。
from myapp import views as app_views
from django.conf.urls import url
urlpatterns =[
url(r'^my_form/$', app_views.home, name='save_form'),
]
然后将操作添加到表单中。
<form action="{% url 'save_form' %}" method="post" class="form">
答案 1 :(得分:0)
您应该调用实例字段,而不是类字段,并从经过验证(清理)的数据中获取值(请参阅documentation):
return HttpResponse(form.cleaned_data['n'])
如果您要使用n
值重新加载相同的模板:
return render(request, 'index.html', {'form': form, 'n': form.cleaned_data['n']})
并在模板中添加:
{% if form.is_valid %}
<p> Hello {{ n }} </p>
{% endif %}