python – 重复键值违反唯一约束“auth_user_username_key”DETAIL:键(用户名)=(无)已存在
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 重复键值违反唯一约束“auth_user_username_key”DETAIL:键(用户名)=(无)已存在,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2030字,纯文字阅读大概需要3分钟。
内容图文
![python – 重复键值违反唯一约束“auth_user_username_key”DETAIL:键(用户名)=(无)已存在](/upload/InfoBanner/zyjiaocheng/774/a55dc6d64d994267ae00dd3414d5c8e1.jpg)
我想使用自定义寄存器模型注册用户,但我不断收到以下错误:
duplicate key value violates unique constraint “auth_user_username_key” DETAIL: Key (username)=(None) already exists
我该如何解决这个错误.
这是我到目前为止创建的代码:
在urls.py中,我为各个页面创建了url配置.
from django.conf.urls import url
from django.contrib.auth.views import login
from . import views
urlpatterns = [
url(r'^$', views.nest, name = 'nest'),
url(r'^login/$', login, {'template_name' : 'Identities/login.html'}, name = 'login'),
url(r'^register/$', views.register, name = 'register'),
]
在forms.py中,我创建了自定义注册表单.
from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm
# Create custom user registration
class CreateAccountForm(UserCreationForm):
email = forms.EmailField(required = True)
class Meta:
model = User
fields = (
'first_name',
'last_name',
'email',
'password1',
'password2'
)
def save(self, commit = True):
user = super(CreateAccountForm, self).save(commit = False)
user.first_name = self.cleaned_data['first_name']
user.last_name = self.cleaned_data['last_name']
user.email = self.cleaned_data['email']
if commit:
user.save()
return user
在views.py中,我创建了寄存器视图功能.
from django.shortcuts import render, redirect
from Identities.forms import CreateAccountForm
# Create your views here.
def nest(request):
return render(request, 'Identities/nest.html')
def register(request):
if request.method == 'POST':
form = CreateAccountForm(request.POST)
if form.is_valid():
form.save()
else:
return redirect(reverse('Identities:logout'))
else:
form = CreateAccountForm()
var = {'form' : form}
return render(request, 'Identities/create_account.html', var)
解决方法:
您需要在表单中包含用户名. Coz用户名是唯一字段,不能在表单中排除.如果你在表单中排除它,你需要通过为每个用户生成唯一的用户名来处理它,这有点单调乏味.
class CreateAccountForm(UserCreationForm):
email = forms.EmailField(required = True)
class Meta:
model = User
fields = (
'username'
'first_name',
'last_name',
'email',
'password1',
'password2'
)
. . . . . .
. . . . . .
内容总结
以上是互联网集市为您收集整理的python – 重复键值违反唯一约束“auth_user_username_key”DETAIL:键(用户名)=(无)已存在全部内容,希望文章能够帮你解决python – 重复键值违反唯一约束“auth_user_username_key”DETAIL:键(用户名)=(无)已存在所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。