• 1401/10/19

مشکل هنگام استفاده از validator ها در فرم :

سلام من تو فرم ثبت نام وقتی از validator ها استفاده میکنم ارور زیر رو میگیرم

 و وقتی هم که validator هارو بردارم ارورهای فرم در زیر فیلد ها نمایش داده نمیشه

وقتی validate میذارم این ارور رو میگیرم:

TypeError at /register

'>' 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
  • 1401/10/19
  • ساعت 23:54

کد های فرم


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('کلمه عبور و تکرار کلمه عبور یکسان نیستند')



  • 1401/10/19
  • ساعت 23:55

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)

  • 1401/10/20
  • ساعت 09:15

با سلام.

 

برای فیلدهای متنی در validator ها به جای MaxValueValidator باید از MaxLengthValidator  استفاده کنید.


  • 1401/10/21
  • ساعت 01:43

سلام دوست من

مشکل از validator مورد استفاده هستش

Max value برای اعداد استفاده  میشه

باید از max length استفاده کنین


logo-enamadlogo-samandehi