【发布时间】:2020-10-19 08:25:26
【问题描述】:
我正在使用Django AllAuth,正在为应用程序的用户制作一个简单的个人资料页面。这可以通过输入用户的用户名来实现。
# urls.py
path('<str:username>/', UserDetail.as_view(), name='user-detail'),
# views.py
class UserDetail (DetailView):
template_name = 'dashboard/user.html'
model = User
def get_object(self):
return get_object_or_404(User, username=self.kwargs['username'])
我的想法是它会像推特一样运作。用户创建一个帐户用户名,如MyUsername,它看起来很好区分大小写并且可搜索不区分大小写。因此,如果有人搜索用户,他们可以输入不区分大小写的用户名,它总是会以更好看的区分大小写的样式找到正确的用户。
那时我意识到用户名:MyUsername 应该是 myusername 实际上是 2 个不同的用户!否则我认为我的想法很天真。
Django AllAuth 确实有我可以实现的ACCOUNT_PRESERVE_USERNAME_CASING (=True),但这只会使所有用户名都是小写的,而我只是想让用户名不区分大小写唯一,同时仍然显示更好的区分大小写的版本。
处理使用户名不区分大小写唯一但仍向用户显示区分大小写格式的最佳方法是什么?
【问题讨论】:
-
您可以在其中覆盖
LoginForm和login方法来检查用户名是否区分大小写。您还需要覆盖SignupForm以检查是否没有具有相同用户名的用户(不区分大小写)您可以在此处阅读 - link
标签: python django django-authentication django-allauth django-users