【问题标题】:Basic Django form response基本的 Django 表单响应
【发布时间】:2017-09-14 09:42:25
【问题描述】:

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

那么代码怎么写

【问题讨论】:

    标签: python django django-forms


    【解决方案1】:

    您应该调用实例字段,而不是类字段并从验证(清理)数据中获取值(请参阅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 %}
    

    【讨论】:

      【解决方案2】:
      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 %}
      

      edit我现在看到您的表单中没有任何操作。

      因此,您需要在 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">
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-09-29
        • 2012-01-03
        • 1970-01-01
        • 2016-09-03
        • 2017-08-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多