简体   繁体   English

区分大小写 django

[英]Case sensitves django

I tried to put this code to deactivate the sensitivity of the characters when logging in, but it does not work.我试图在登录时放置此代码以停用字符的敏感性,但它不起作用。 What is the problem with it?它有什么问题? It still appears to me.在我看来仍然如此。 Please consider the sensitivity of the characters请考虑字符的敏感性

I want to use this method.我想用这个方法。 I do not want to use the backend method Please help me find the problem我不想使用后端方法请帮我找到问题所在

class CustomUserManager(UserManager):
    def get_by_natural_key(self, username):
        return self.get(username__iexact=username)

class User(AbstractBaseUser):
    """
    Decapolis main User model
    """
    username = models.CharField(max_length=40, unique=True)
    email = models.CharField(max_length=40, unique=True)

    first_name = models.CharField(_('first name'), max_length=30, blank=True)
    last_name = models.CharField(_('last name'), max_length=30, blank=True)

    is_active = models.BooleanField(default=True)
    is_staff = models.BooleanField(default=False)
    is_superuser = models.BooleanField(default=False)

    company = models.ForeignKey(settings.COMPANY_MODEL, on_delete=models.CASCADE, related_name='user_company',
                                null=True, blank=True)
    roles = models.ManyToManyField(Role, blank=True)

    objects = CustomUserManager()

    USERNAME_FIELD = 'username'
    REQUIRED_FIELDS = ['email']
     def has_role(self, role_name):
        """
        Check user has role

        :param role_name: role name to check
        :type role_name: str
        :return: True or False
        :rtype: bool

        """
        return True if role_name in self.roles else False

    def has_perm(self, perm, obj=None):
        """
        Does the user have a specific permission?

        Not implemented yet

        :param perm: permission to check
        :type perm: str
        :param obj: object to check
        :type obj:
        :return:
        :rtype:

        """
        # Simplest possible answer: Yes, always
        return True

    def has_module_perms(self, app_label):
        """
        Does the user have permissions to view the app `app_label`?

        Not implemented yet

        :param app_label:
        :type app_label:
        :return:
        :rtype:
        """

        # Simplest possible answer: Yes, always
        return True

    def get_full_name(self):
        """
        Returns the first_name plus the last_name, with a space in between.
        """
        full_name = '%s %s' % (self.first_name, self.last_name)
        return full_name.strip()

    def __str__(self):
        return self.username



Use validator like this
    def validate_caseinsensitive(value):
        if User.objects.filter(code__iexact=value).exists():
            raise ValidationError('This User already exists.')
        return value

#in models.py #in 模型.py

class User(BaseUser):
    code = models.CharField(max_length=10, unique=True, validators=[validate_caseinsensitive])
    # ... other code ...
    def save(self, *args, **kwargs):
        self.code = self.code.upper()
        super(User, self).save(*args, **kwargs)
    # ... other code ...

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM