Django不区分大小写的登录,混合大小写的用户名

标签 django

我正在尝试对 Django 应用程序进行不区分大小写的登录,而不更改原始用户名大小写。根据我的研究,最好的方法是创建一个相关字段,在注册时以小写形式存储用户名。无需重新发明用户模型,这是一个简单的解决方案,对吗?我的困境:如何在创建对象时从一个模型中获取数据、更改它并将其保存在另一个模型中?

这是 中的内容模型.py :

from django.db import models
from django.contrib.auth.models import User

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    lc_n = User.username
    lc_n = lc_n.lower()
    lowercase_name = models.CharField(max_length=30, default=lc_n)

运行时 python manage.py makemigrations有以下错误:
AttributeError: type object 'User' has no attribute 'username'
用户确实具有该属性,但无法通过这种方式访问​​它。

请原谅我,因为这肯定包含一些简单的基本缺陷。任何可能提供的支持将不胜感激。

最佳答案

您不需要任何额外的模型来实现不区分大小写的登录。 Django 通过 iexact 支持不区分大小写的过滤运算符(operator):

user = User.objects.get(username__iexact=name)

关于Django不区分大小写的登录,混合大小写的用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27673410/

相关文章:

python - django登录页面中的 session

python - 重复的列名

python - GAE SDK 1.7.4 和 InvalidCertificateException

Django模型时间范围过滤方法

python - 在 Django 中返回错误的 URL

django - 具有多个值的 Tastypie 过滤

django 的 python 密码生成器

python - Django - 字典更新序列元素 #0 的长度为 1; 2 是必需的

Django celery ubuntu 14.04

python - Django 和 Sqlite 并发问题