【问题标题】:Working with forms in Django and checking if all the input fields are entered在 Django 中使用表单并检查是否输入了所有输入字段
【发布时间】:2020-05-18 05:53:18
【问题描述】:

我创建了一个联系页面,并在那里创建了一个如下所示的表单

现在我想要那个“提交”按钮来检查是否输入了所有输入字段。如果是,那么我想激活

<form action="{% url 'contact' %}" method="post">

否则没有后方法激活。而是会出现一个弹出消息框,告诉您“请输入所有字段”

如果激活了 post 方法,我想转到我的 views.py 文件的 {% url 'contact' %} 并检查系统是否能够从输入字段中检索所有值。

如果这样做,它将呈现一个新的联系页面 return render(request, 'myapp/contact.html') 并在浏览器中弹出另一个消息框“表单提交成功” 浏览器的另一个消息框“提交表单时发生错误”

我真的找不到实现这一点的方法。我是一个新手是 Django 和 Python。我在 html 和 CSS 方面的经验非常少。但是没有 JavaScript,虽然我使用了一小段 JavaScript 代码,但我希望完全使用 Python、HTML 和 CSS。是否可以使用我想要的语言来实现这个场景?

如果是,请告诉我怎么做。

【问题讨论】:

    标签: python django


    【解决方案1】:

    您可以在客户端验证中执行此操作。要进行验证,所有字段都不应留空。像这样

    function validateForm() {
        var isValid = true;
             $('.form-field').each(function() {
                  if ( $(this).val() === '' )
                       confirm("All Fields are required!");
                        isValid = false;
               });
         return isValid;
    }
    

    【讨论】:

      【解决方案2】:

      我建议使用 Django 表单。 https://docs.djangoproject.com/en/3.0/ref/forms/api/#django.forms.Form

      使用表单类创建一个联系表单,将其传递到模板中。它将为默认浏览器验证制作 HTML 标签。它还允许在提交表单时进行后端验证。然后,如果表单有效或无效,您可以重定向用户。

      如果您想从头开始,可以执行以下操作。

      确保在您的 HTML 中将必需的属性添加到所需的输入字段

      <input name="name" type="text" ... required ... >
      

      从 django 消息中导入消息,检查用户输入是否有效,添加消息并渲染 contact.html。这将向模板发送一条消息。您可以使用 HTML 和 CSS 设置消息样式。

      在views.py中

      from django.contrib import messages
      
      if request.method == POST:
          ...
          name = request.POST.get('name')
          if name == '':
              messages.warning(request, 'Please enter name !')
              return render(request, 'myapp/contact.html')
          ...
      

      【讨论】:

      • 难道不能从头开始吗?
      • 您可以从头开始,我已经编辑了答案以包含该选项。在我看来,表单类更好,它增加了更多功能。
      【解决方案3】:

      看看我的代码,如果简单的话,就像我看第二行和第三行一样做一个 if 语句

      def signup(request):
          if request.method == 'POST':
              if request.POST['password1']   == '':
                  return render(request, 'accounts/signup.html', {'error': 'Please fill all the fileds '})
              elif request.POST['password1'] == request.POST['password2']:
      (YOUR CODE HERE )
      

      【讨论】:

        猜你喜欢
        • 2020-02-27
        • 2017-09-25
        • 1970-01-01
        • 2012-05-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-28
        • 2015-10-24
        相关资源
        最近更新 更多