【发布时间】:2019-12-07 20:25:02
【问题描述】:
我编写了一个使用手动模板渲染的小型身份验证应用程序。我可以从表单中获取和更新数据,但我只想验证这些字段。但是我无法继续前进,因为我没有使用任何 Django 表单模型。客户端验证正在进行中,但是服务器端验证呢。
使用 python v3 和 Django v2 我没有使用 forms 模型不继承自 forms.py 。那我怎么验证?? 我用于注册的模板文件。 `
<form action="{% url 'register' %}" method="post">
{% csrf_token %}
{% for message in messages %}
<div class="alert {% if message.tags %} alert-{{ message.tags }}{% endif %}">{{ message|safe }}</div>
{% endfor %}
<h3>Registration Form</h3>
<div class="form-group">
<input type="text" name="first_name" placeholder="First Name" class="form-control" required>
<input type="text" name="last_name" placeholder="Last Name" class="form-control" required>
</div>
<div class="form-wrapper">
<input type="text" name="email" placeholder="Email Address" class="form-control" required>
<i class="zmdi zmdi-email"></i>
</div>
<div class="form-wrapper">
<input type="text" name="phone" placeholder="Phone" class="form-control" required>
<i class="zmdi zmdi-phone"></i>
</div>
<div class="form-wrapper">
<input type="password" name="password1" placeholder="Password" class="form-control" required>
<i class="zmdi zmdi-lock"></i>
</div>
<div class="form-wrapper">
<input type="password" name="password2" placeholder="Confirm Password" class="form-control"
required>
<i class="zmdi zmdi-lock"></i>
</div>
<button>Register
<i class="zmdi zmdi-arrow-right"></i>
</button>
</form>
</div>
</div>
` 视图.py
def register(request):
if request.method == "POST":
first_name = request.POST['first_name']
last_name = request.POST['last_name']
phone = request.POST['phone']
email = request.POST['email']
password1 = request.POST['password1']
password2 = request.POST['password2']
if password1 == password2:
if User.objects.filter(phone=phone).exists():
messages.info(request, 'Requested phone exists')
elif User.objects.filter(email=email).exists():
messages.info(request, 'Requested email exists')
return redirect('register')
else:
user = User.objects.create_complete_user(first_name=first_name, last_name=last_name, phone=phone,
email=email, password=password1)
user.save()
messages.info(request, 'successfully user object is created')
return redirect('login')
else:
messages.info(request, 'Passwords not matching')
return redirect('register')
else:
return render(request, 'signup.html')
【问题讨论】:
-
您需要添加有问题的代码,以便我们对其进行评估。否则我们只能胡乱猜测。
-
@stackoverflow.com/users/473354/agey 我只想知道如何验证必须放入数据库的表单数据。当我设法在管理员页面中注册或创建用户时,它会验证所有字段,因为它使用 Usercreationform 但未使用任何表单。我明确地在模板中创建表单并映射数据库操作的值。
-
如果您想正确验证和清理您的数据,请使用 django 表单。并且也可以使用它们进行渲染,使用表单并不意味着您不能将手放在生成的 html 上。
标签: django-forms