
Django
Python# forms.pyfrom Django import formsfrom Django.core.validators import RegExValidatorclass RegistrationForm(forms.Form): username = forms.CharField( label='用户名', max_length=20, validators=[ RegExValidator( RegEx='^[a-zA-Z0-9_]{4,20}$', message='用户名必须由字母、数字和下划线组成,长度在4到20个字符之间。' ) ] ) password = forms.CharField( label='密码', max_length=20, widget=forms.PasswordInput(), validators=[ RegExValidator( RegEx='^(?=.*[A-Za-z])(?=.*\d)(?=.*[@$!%*#?&])[A-Za-z\d@$!%*#?&]{8,20}$', message='密码必须由字母、数字和特殊字符组成,长度在8到20个字符之间。' ) ] ) emAIl = forms.EmAIlField(label='电子邮件地址')html<!-- registration.html --><!DOCTYPE html><html><head> <title>用户注册</title> <script> window.onload = function() { var usernameInput = document.getElementById('id_username'); var passwordInput = document.getElementById('id_password'); var emAIlInput = document.getElementById('id_emAIl'); var submitButton = document.getElementById('submit-button'); function validateUsername() { var RegEx = /^[a-zA-Z0-9_]{4,20}$/; var username = usernameInput.value; if (!RegEx.test(username)) { usernameInput.setcustomValidity('用户名必须由字母、数字和下划线组成,长度在4到20个字符之间。'); } else { usernameInput.setcustomValidity(''); } } function validatePassword() { var RegEx = /^(?=.*[A-Za-z])(?=.*\d)(?=.*[@$!%*#?&])[A-Za-z\d@$!%*#?&]{8,20}$/; var password = passwordInput.value; if (!RegEx.test(password)) { passwordInput.setcustomValidity('密码必须由字母、数字和特殊字符组成,长度在8到20个字符之间。'); } else { passwordInput.setcustomValidity(''); } } function validateEmAIl() { var emAIl = emAIlInput.value; if (emAIl === '' || emAIl.indexOf('@') === -1) { emAIlInput.setcustomValidity('请输入有效的电子邮件地址。'); } else { emAIlInput.setcustomValidity(''); } } usernameInput.addEventListener('input', validateUsername); passwordInput.addEventListener('input', validatePassword); emAIlInput.addEventListener('input', validateEmAIl); submitButton.addEventListener('click', function(event) { var form = document.getElementById('registration-form'); if (!form.checkValidity()) { event.preventDefault(); } }); }; </script></head><body> <h1>用户注册</h1> <form id="registration-form" method="POST"> {% csrf_token %} {{ form.as_p }} <button id="submit-button" type="submit">注册</button> </form></body></html>在上面的案例代码中,我们首先定义了一个RegistrationForm类,用于描述用户注册表单。该表单有三个字段:用户名、密码和电子邮件地址。我们使用Django提供的验证器来对这些字段进行后端验证。在HTML模板中,我们使用JavaScript来实现前端验证。通过获取表单元素的引用,并监听输入事件,可以在用户输入数据时实时验证数据的有效性。同时,我们还使用了setcustomValidity方法来设置自定义的验证错误消息。最后,在提交表单时,我们通过checkValidity方法检查表单的有效性。如果表单无效,我们阻止默认的提交行为,从而实现了表单验证的功能。本文介绍了如何使用Django和JavaScript进行表单验证。通过结合Django的后端验证和JavaScript的前端验证,我们可以有效地保护用户输入数据的完整性和安全性。在实际开发中,我们可以根据具体的需求,灵活运用表单验证的技术,为用户提供更好的交互体验。Copyright © 2025 IZhiDa.com All Rights Reserved.
知答 版权所有 粤ICP备2023042255号