get_or_create throws Integrity Error

The parameters sent into the get_or_create method need to match exactly, or django's ORM would try to create a new object, and since a primary key/unique column constraint would be violated, you are getting the error.

Try this:

if form.is_valid():
    first_name = form.cleaned_data['first_name']
    last_name = form.cleaned_data['last_name']
    myemail = form.cleaned_data['email']
    mypass = form.cleaned_data['password']
    if myemail and mypass:
        myuser,created = User.objects.get_or_create(email=myemail, defaults = {'username': myemail, 'first_name': first_name, 'last_name': last_name})
        if created:
            myuser.set_password(mypass)

return HttpResponseRedirect('/')

Read more on get_or_create here. The defaults= argument is what you needed.