Django exception handling dziwny blad

0

Witam mam problem z wyrzucaniem wyjatkow w Django moj kod:

 from django import forms
from .models import User
from django.forms import ValidationError

class UserForm(forms.Form):
    username = forms.CharField(label="username",max_length=100,min_length=8)
    email = forms.EmailField(label="email")
    password = forms.CharField(widget=forms.PasswordInput,min_length=8)


    def check_if_user_exists(self,username):

        if(User.objects.all().filter(username__icontains=username).exists()):
            raise ValidationError('The user with this username already exists!')
        return False

 from django.shortcuts import render, redirect
from .forms import UserForm
from .models import User

def index(request):

    user = User()
    if request.method == 'POST':
        form = UserForm(request.POST)
        if form.is_valid() :
            user.username = form.cleaned_data['username']
            user.email = form.cleaned_data['email']
            user.password = hash(form.cleaned_data['password'])
            if form.check_if_user_exists(user.username):
                pass
            else:
                user.save()

            

            return redirect('/register/')
    else:
        form = UserForm()

    return render(request,'registration/index.html',{'form':form})

link z SS bledu : http://imgur.com/a/tVINo

0

To teraz zobacz w adminie łaskawie na swoich userów i zastanów się czego powinieneś się spodziewać, jeśli nigdzie nie łapiesz wyjątku pt. dany nick jest już zajęty

0

Takie tam wycinki z mojego projektu, może coś z tego sklecisz ;)

views.py

def registerPost(request):
	form = RegisterForm(request.POST)

	if form.is_valid():
		username = form.cleaned_data['login']
		password = form.cleaned_data['password']

		user = get_user_model().objects.create_user(username.lower(), username, password)

		user.save()

	return render(request, 'forms/registerForm.html', extraDTO({
		"form": form.as_table(),
	}, request))

forms.py

class RegisterForm(forms.Form):
    error_css_class = 'formError'

    login = forms.EmailField(label = u'e-mail', required = True)
    password = forms.CharField(label=u'hasło', required = False, widget=forms.PasswordInput)
    repeatPassword = forms.CharField(label=u'powtórz hasło', required=False, widget=forms.PasswordInput)
    acceptRegulations = forms.BooleanField(label=mark_safe(u'Akceptuję <a class="textLink regulationsLink" href="/regulations">Regulamin</a>'), required=True, error_messages={'required': u"Musisz zaakceptować regulamin, aby się zarejestrować!"})

    def clean(self):
        errorsDict = dict()

        cleaners.cleanPasswordRepeat(errorsDict, self.cleaned_data)
        cleaners.cleanPasswordRequirements(errorsDict, self.cleaned_data)
        cleaners.cleanUserExists(errorsDict, self.cleaned_data)

        if errorsDict:
            raise forms.ValidationError(errorsDict)

        return self.cleaned_data

cleaners.py

# -*- coding: utf-8 -*-

def cleanPasswordRepeat(errorsDict, cleaned_data):

    password1 = cleaned_data.get('password')
    password2 = cleaned_data.get('repeatPassword')

    if password1 and password1 != password2:
        errorsDict['repeatPassword'] = u"Hasła się nie zgadzają!"

def cleanPasswordRequirements(errorsDict, cleaned_data):
    password1 = cleaned_data.get('password')
    passwordErrors = getPasswordErrors(password1)

    if passwordErrors:
        errorsDict['password'] = mark_safe(passwordErrors)

def cleanUserExists(errorsDict, cleaned_data):
    if get_user_model().objects.filter(username__exact=cleaned_data.get('login')).exists():
        errorsDict['login'] = u"Użytkownik z takim loginem już istnieje!"

1 użytkowników online, w tym zalogowanych: 0, gości: 1