提问人:Hack-R 提问时间:6/8/2017 更新时间:10/17/2019 访问量:1915
在 Django 1.11 中更改用户名max_length (django.contrib.auth)
Change username max_length in Django 1.11 (django.contrib.auth)
问:
我的用户使用电子邮件地址作为用户名,这在 Django 1.9 中导致了一个问题,因为最大长度为 30 个字符。username
这应该由 Django 1.10 修复,我相信有 150 个字符的限制(尽管看起来文档实际上说某些数据库应该能够达到 191 个字符)。max_length
我升级到了 Django 1.11,但似乎仍然限制在 30 个字符以内。是因为我需要在某处设置值吗?如果是这样,我应该在哪里设置它(一个例子会很好)?如果没有,如何增加最大长度?username
max_length
这是我目前的观点。
def register(request):
alreadyRegistered = False
invalidID = False
context_dict = {}
if request.method == 'POST':
# Gather the username and password provided by the user.
# This information is obtained from the login form.
Userid = request.POST['username']
Userid = Userid[0:29] # horrible work-around that has to change
if User.objects.filter(username=Userid).count() > 0:
alreadyRegistered = True
else:
isGU = 1 > 0 # this will always = TRUE for now
if isGU or isEA:
firstname = request.POST['firstname']
lastname = request.POST['lastname']
email = Userid
password = request.POST['password']
user = User.objects.create_user(Userid, email, password)
user.first_name = firstname
user.last_name = lastname
user.save()
registered = True
user = authenticate(username=Userid, password=password)
login(request, user)
return HttpResponseRedirect('/studentprogress/')
else:
invalidID = True
context_dict['alreadyRegistered'] = alreadyRegistered
context_dict['invalidID'] = invalidID
return render(request,
'studentprogress/register.html', context_dict)
答:
1赞
Pettis
6/8/2017
#1
允许自定义用户名字段长度的一种方法是使用自定义用户模型。文档在这里:https://docs.djangoproject.com/en/1.11/topics/auth/customizing/#specifying-a-custom-user-model
从 AbstractBaseUser 扩展您的自定义用户模型,它提供了使用 Django 身份验证的必要方法。
基本上,您可以使用所需的数据创建模型,并在模型中定义必填字段。在这种情况下,您可能希望将USERNAME_FIELD和EMAIL_FIELD设置为模型中的相同字段。
0赞
Jeff
10/17/2019
#2
Django 1.10 附带了更改用户名max_length的迁移。您只需要运行迁移,即 以更新数据库表。python manage.py migrate auth
评论