如何在Django中验证纯HTML表单字段

问题描述

我是laravel开发人员,并且是django的新手。 django一切进展顺利,直到我开始探索表格。我想使用纯HTML表单并使用django表单验证对其进行验证,但是我没有获得适当的参考资料或教程。

我需要一些示例或帮助来验证Django中纯HTML表单字段。

以下是我的代码段:

模板:

<form action="{% url 'user.create' %}" method="post">
   {% csrf_token %}
   <div class="row">
      <div class="input-field col s6">
           <input id="user_name" name="user_name" type="text">
            <label for="user_name">Username</label>
       </div>
       <div class="input-field col s6">
           <input id="password" name="password" type="password">
           <label for="password">Password</label>
        </div>
     </div>
     <div class="row">
       <div class="input-field col s6">
         <input id="email" name="email" type="email">
         <label for="email">Email</label>
        </div>
        <div class="input-field col s6">
           <input id="phone" name="phone" type="text">
           <label for="phone">Phone</label>
        </div>
      </div>

 <input class="waves-effect waves-light btn blue darken-2" type="submit" value="Register" />
</form>

查看:

def createuser(request):
    form = RegisterUser(request.POST)

    if form.is_valid():
        user = User(user_name = form.cleaned_data['user_name'],password = form.cleaned_data['password'],email = form.cleaned_data['email'],phone = form.cleaned_data['phone'],)

        user.save()
        return redirect("index")
    else:
        return messages.error(request,"Invalid data")

表格:

class RegisterUser(forms.Form):
    user_name = forms.CharField(max_length=50)
    password = forms.CharField(max_length = 50)
    email = forms.CharField(max_length = 50)
    phone = forms.CharField(max_length = 50)

解决方法

我认为您正在尝试使用默认用户模型创建用户。如果您想在验证失败后使用错误呈现表单,我认为有必要将表单作为上下文传递给呈现方法,以便模板可以使用错误数据重新呈现。然后,对于所有字段错误,您可以访问以下错误:form.errors,对于所有非字段错误,可以访问form.non_field_errors,对于特定字段错误,可以访问form.fieldname.errors,例如:form.user_name.errors

def createUser(request):
    form = RegisterUser(request.POST)

    if form.is_valid():
        # user = User(user_name = form.cleaned_data['user_name'],user_name = form.cleaned_data['user_name'
        password = form.cleaned_data['password'],email = form.cleaned_data['email'],phone = form.cleaned_data['phone'],)
        user = User.create(username,email)
        user.set_password(password)
        user.save()
        return redirect("index")
    else:
        messages.error(request,"Invalid data")
        return render(request,'your_form.html',{'form': form})

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...