基本的Django表单响应

时间:2017-09-14 09:42:25

标签: python django django-forms

我是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>

那么代码如何

2 个答案:

答案 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 %}
相关问题