Django 1.9 проверьте, существует ли электронная почта

Мой сайт настроен таким образом, что нет имени пользователя (или, скорее, user.username = user.email). У Django появляется сообщение об ошибке, если пользователь пытается ввести имя пользователя, которое уже есть в базе данных, однако, поскольку я не использую имя пользователя для регистрации, я не могу понять, как это сделать.

Как и настройки по умолчанию, я не хочу перезагружать страницу, чтобы узнать, есть ли адрес электронной почты, уже связанный с пользователем. Я предполагаю использовать Ajax, но я не могу понять, как это сделать. Я просмотрел другие посты, но, похоже, ничего недавнего не произошло.

Как я могу проверить, существует ли уже адрес электронной почты, и если да, дать пользователю сообщение об ошибке при вводе нового адреса электронной почты?

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 %}

Ответы на вопрос(1)

Ваш ответ на вопрос