سلام من تو فرم ثبت نام وقتی از validator ها استفاده میکنم ارور زیر رو میگیرم
و وقتی هم که validator هارو بردارم ارورهای فرم در زیر فیلد ها نمایش داده نمیشه
وقتی validate میذارم این ارور رو میگیرم:
'>' not supported between instances of 'str' and 'int'
Request Method: | POST |
---|---|
Request URL: | http://127.0.0.1:8000/register |
Django Version: | 4.1.2 |
Exception Type: | TypeError |
Exception Value: | '>' not supported between instances of 'str' and 'int' |
Exception Location: | C:\Users\EDR\Desktop\mamad\venv\Lib\site-packages\django\core\validators.py, line 393, in compare |
کد های فرم
class RegisterForm(forms.Form):
email = forms.EmailField(label='ایمیل',
widget=forms.EmailInput(attrs={'placeholder': 'ایمیل خود را وارد کنید'}),
# validators=[validators.MaxValueValidator(100), validators.EmailValidator]
)
password = forms.CharField(
label='کلمه عبور',
widget=forms.PasswordInput(attrs={'placeholder': 'رمز عبور را وارد کنید'}),
# validators=[validators.MaxValueValidator(100)]
)
confirm_passoword = forms.CharField(
label='تکرار کلمه عبور',
widget=forms.PasswordInput(attrs={'placeholder': 'رمز عبور را تکرار وارد کنید'}),
# validators=[validators.MaxValueValidator(100)]
)
def clean_confirm_passowrd(self):
password = self.cleaned_data.get('password')
confirm_password = self.cleaned_data.get('confirm_passoword')
if password == confirm_password:
return confirm_password
raise ValidationError('کلمه عبور و تکرار کلمه عبور یکسان نیستند')
view:
class RegisterView(View):
def get(self, request):
register_form = RegisterForm()
context = {
'register_form': register_form
}
return render(request, 'account_module/register.html', context)
def post(self, request: HttpRequest):
register_form = RegisterForm(request.POST)
if register_form.is_valid():
# ثبت نام کاربر
user_email = register_form.cleaned_data.get('email')
user_password = register_form.cleaned_data.get('password')
user: bool = User.objects.filter(email__iexact=user_email).exists()
if user:
register_form.add_error('email', 'ایمیل وارد شده تکراری می باشد')
else:
new_user = User(email=user_email, email_active_code=get_random_string(72), is_active=False, username=user_email)
new_user.set_password(user_password)
new_user.save()
# ارسال کد فعال سازی ایمیل
send_email('فعال سازی حساب کاربری', new_user.email, {'user': new_user}, 'emails/activate_account.html')
return redirect(reverse('login_view'))
context = {
'register_form': register_form
}
return render(request, 'account_module/register.html', context)
با سلام.
برای فیلدهای متنی در validator ها به جای MaxValueValidator باید از MaxLengthValidator استفاده کنید.
سلام دوست من
مشکل از validator مورد استفاده هستش
Max value برای اعداد استفاده میشه
باید از max length استفاده کنین