Я использую пользовательскую модель в Django. При регистрации пользователя с использованием персидских или арабских цифр я не могу войти в систему, поскольку имя пользователя и пароль сохранены на персидском языке.
В форме входа я могу изменить запись на unidecode, но в форме регистрации я не могу.
Если я регистрируюсь с английскими цифрами, я могу войти со всеми цифрами (английский, персидский и т. Д.), Но если я регистрируюсь на персидском или арабском, я не могу войти. Как я могу решить это?
Я использую Unidecode для Digit и text-unidecode для поля char
в коде я пытаюсь unidecoede телефон (имя пользователя) и пароль в форме Reg, но я не могу заставить его работать
Сохранить в форме:
def save(self, commit=True):
# Save the provided password in hashed format
user = super(RegisterForm, self).save(commit=False)
password1 = self.cleaned_data.get("password1")
password1 = unidecode(password1)
user.set_password(password1)
user.is_active = True # send confirmation email via signals
# obj = EmailActivation.objects.create(user=user)
# obj.send_activation_email()
if commit:
user.save()
return user
Создать пользователя в модели:
class UserManager(BaseUserManager):
def create_user(self, phone, name, family, password=None, is_active=True, is_staff=False, is_admin=False):
if not phone:
raise ValueError("Users must have an phone")
if not password:
raise ValueError("Users must have a password")
if not name:
raise ValueError("Users must have a name")
if not family:
raise ValueError("Users must have a family")
this_phone = unide(phone)
this_password = unidecode(password)
user_obj = self.model(
phone = this_phone,
name = name,
family = family
)
user_obj.set_password(this_password) # change user password
user_obj.is_active = is_active
user_obj.staff = is_staff
user_obj.admin = is_admin
user_obj.save(using=self._db)
return user_obj