forms.py 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. from .models import CastomUser
  2. from django.core.exceptions import ValidationError
  3. from django.core.validators import RegexValidator
  4. from django import forms
  5. from .validators import validate_pasword_len
  6. class RegisterUserForm(forms.ModelForm):
  7. first_name = forms.CharField(
  8. label='Имя',
  9. validators=[RegexValidator('^[а-яА-Я- -]+$',
  10. message="Разрешены только кириллица, дефис и пробелы")],
  11. error_messages={'required': 'Обязательное поле', }
  12. )
  13. last_name = forms.CharField(
  14. label='Фамилия',
  15. validators=[RegexValidator('^[а-яА-Я- -]+$',
  16. message="Разрешены только кириллица, дефис и пробелы")],
  17. error_messages={'required': 'Обязательное поле', }
  18. )
  19. username = forms.CharField(label='Логин',
  20. validators=[RegexValidator('^[a-zA-Z0-9-]+$',
  21. message = "Разрешены только латиница, цифры или тире")],
  22. error_messages={
  23. 'required': 'Обязательное поле',
  24. 'unique': 'Данный логин занят'
  25. })
  26. email = forms.EmailField(label='Anpec злектронной почт',
  27. error_messages={
  28. 'invalid': 'Hе правильный формат адреса',
  29. 'unique': 'Данный адрес занят'
  30. })
  31. password = forms.CharField(label='Пароль',
  32. widget=forms.PasswordInput,
  33. validators=[validate_pasword_len],
  34. error_messages={
  35. 'required': 'Обязательное поле',
  36. })
  37. password2 = forms.CharField(label='Пapоль (повторно)',
  38. widget=forms.PasswordInput,
  39. error_messages={
  40. 'required': 'Обязательное поле',
  41. })
  42. rules = forms.BooleanField(required=True,
  43. label='Согласие с правилами регистрации',
  44. error_messages={
  45. 'required': 'Обязательное поле',
  46. })
  47. def clean(self):
  48. super().clean()
  49. password = self.cleaned_data.get('password')
  50. password2 = self.cleaned_data.get('password2')
  51. if password and password2 and password != password2:
  52. raise ValidationError({
  53. 'password2': ValidationError('Введенные пароли не совпадант', соdе='password_mismatch')
  54. })
  55. def save(self, commit=True):
  56. user = super().save(commit=False)
  57. user.set_password(self.cleaned_data.get('password'))
  58. if commit:
  59. user.save()
  60. return user
  61. class Meta:
  62. model = CastomUser
  63. fields = ('first_name', 'last_name', 'username', 'email', 'password', 'password2', 'rules')
  64. class SearchForm(forms.Form):
  65. query = forms.CharField(max_length=255, required=False, label= 'Search')