如何验证 Django 中的纯 HTML 表单字段
How to validate plain HTML form fields in django
我是一名 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)
我认为您正在尝试使用默认用户模型创建用户。如果你想在验证失败后渲染带有错误的表单,我认为有必要将表单作为上下文传递给渲染方法,这样模板就可以 re-render 带有错误数据。然后您可以访问所有字段错误的 form.errors
错误,所有非字段错误的 form.non_field_errors
或特定字段错误的 form.fieldname.errors
例如:form.user_name.errors
.
def create_user(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})
我是一名 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)
我认为您正在尝试使用默认用户模型创建用户。如果你想在验证失败后渲染带有错误的表单,我认为有必要将表单作为上下文传递给渲染方法,这样模板就可以 re-render 带有错误数据。然后您可以访问所有字段错误的 form.errors
错误,所有非字段错误的 form.non_field_errors
或特定字段错误的 form.fieldname.errors
例如:form.user_name.errors
.
def create_user(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})