Как исправить ошибку UNIQUE constraint failed: auth_user.username
i was trying to use sending email modual from django in order to send sign up email for each user when sign up im facing this error :UNIQUE constraint failed: auth_user.username
` i was trying to use sending email modual from django in order to send sign up email for each user when sign up im facing this error :UNIQUE constraint failed: auth_user.username`
# this is my views.py
from django.shortcuts import render ,redirect
from django.contrib.auth import login
from django.contrib.auth.decorators import login_required
from . import forms
# Create your views here.
def home(request):
return render(request,'home.html')
@login_required
def customer_page(request):
return render(request,'home.html')
@login_required
def courier_page(request):
return render(request,'home.html')
def sign_up(request):
form = forms.SignUPForm()
if request.method=='POST':
form=forms.SignUPForm(request.POST)
if form.is_valid():
email=form.cleaned_data.get('email').lower()
user= form.save(commit=False)
user.useranme = email
user.save()
login(request,user,backend='django.contrib.auth.backends.ModelBackend')
return redirect('/')
return render(request,'sign_up.html',{
'form':form
})
` now i have created signals.py to use email forms `
# my signals.py file
from email.base64mime import body_decode
from django.db.models.signals import post_save
from django.dispatch import receiver
from django.core.mail import send_mail
from django.conf import settings
from django.contrib.auth.models import User
from django.template.loader import render_to_string
from django.core import mail
connection = mail.get_connection()
@receiver(post_save,sender=User)
def send_welcome_email(sender,instance,created,**kwarg):
if created and instance.email:
connection.open()
body=render_to_string(
'welcome_email_template.html',
{
'name':instance.get_full_name()
}
)
email2 = mail.EmailMessage(
'Welcome to fast Parcle',
body,
settings.DEFAULT_FROM_EMAIL,
[instance.email],
fail_silently=False,
)
connection.send_messages([email2])
connection.close()
Кто-то регистрируется с уже существующим именем пользователя. Поле username в таблице auth_user имеет ограничение уникальности, которое не позволяет вставить строку с именем пользователя, которое уже существует в таблице.
спасибо @Eshter решение было таким, как указано выше: создать "пароль приложения" для этой конкретной программы, который вы узнаете, если перейдете по ссылке, которую они дали вам в сообщении об ошибке, и использовать этот созданный пароль внутри кода точно так же, как я использовал обычный пароль