Django 1.9 prüfe ob E-Mail bereits existiert
Meine Site ist so eingerichtet, dass es keinen Benutzernamen gibt (oder vielmehr user.username = user.email). Django hat eine Fehlermeldung, wenn ein Benutzer versucht, einen Benutzernamen einzugeben, der sich bereits in der Datenbank befindet. Da ich jedoch keinen Benutzernamen für die Registrierung verwende, kann ich nicht herausfinden, wie das geht.
Genau wie die Standardeinstellungen bereits sind, möchte ich die Seite nicht erneut laden, um herauszufinden, ob bereits eine E-Mail-Adresse mit einem Benutzer verknüpft ist. Ich vermute, Ajax zu verwenden, aber ich kann nicht herausfinden, wie es geht. Ich habe mir andere Posts angesehen, aber es scheint nichts Neues zu geben.
Wie kann ich überprüfen, ob bereits eine E-Mail-Adresse vorhanden ist, und in diesem Fall dem Benutzer eine Fehlermeldung zur Eingabe einer neuen E-Mail-Adresse übermitteln?
models.py:
class MyUsers(models.Model):
user = models.OneToOneField(User)
first_name = models.CharField(max_length=100, blank=True)
last_name = models.CharField(max_length=100, blank=True)
email = models.EmailField(max_length=100, blank=True, unique=True)
company = models.CharField(max_length=100, blank=True, null=True)
website = models.URLField(max_length=100, blank=True, null=True)
phone_number = models.CharField(max_length=100, blank=True, null=True)
def __str__(self):
return self.user.username
forms.py:
class UserForm(forms.ModelForm):
class Meta:
model = User
fields = ('email',)
class UserProfileForm(forms.ModelForm):
class Meta:
model = UserProfile
fields = ('first_name', 'last_name', 'company', 'website', 'phone_number')
views.py:
def index(request):
registered = False
if request.method == 'POST':
user_form = UserForm(data=request.POST)
profile_form = UserProfileForm(data=request.POST)
if user_form.is_valid() and profile_form.is_valid():
user = user_form.save()
user.set_password(user.password)
user.password = ""
user.username = user.email
user.save()
profile = profile_form.save(commit=False)
profile.user = user
profile.email = user.email
profile.save()
user.first_name = profile.first_name
user.last_name = profile.last_name
user.save()
registered = True
return HttpResponseRedirect(reverse('registration'))
else:
print user_form.errors, profile_form.errors
else:
user_form = UserForm()
profile_form = UserProfileForm1()
context = {'user_form': user_form, 'profile_form': profile_form, 'registered': registered}
return render(request, 'mysite/register.html', context)
register.html:
{% extends 'mysite/base.html' %}
{% load staticfiles %}
{% block title_block %}
Register
{% endblock %}
{% block head_block %}
{% endblock %}
{% block body_block %}
<form id="user_form" method="post" action="/mysite/" enctype="multipart/form-data">
{% csrf_token %}
{{ user_form.as_p }}
{{ profile_form.as_p }}
<input type="submit" name="submit" value="Register" />
</form>
{% endblock %}