Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 24, 2014 12:38:29

bmco@mail.ru
Зарегистрирован: 2014-03-11
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Криво работает регистрация Django

Добрый день!

Помогите, пожалуйста, решить проблемы.

Делаю регистрацию пользователей. Есть проблемы: 1) юзеры не создаются, 2) криво работает форма регистрации - при подтверждении, независимо как заполнены поля формы, всегда выдается страница registration_success!

Модель пользователя - accounts.models:

from django.db import models
from django.utils.translation import ugettext_lazy as _
from django.contrib.auth.models import AbstractBaseUser, BaseUserManager
# Create your models here.
class FexUserManager(BaseUserManager):
    def create_user(self, email, password = None, **kwargs):
        if not email:
            raise ValueError(_('Users must have an email address'))
        user = self.model(
            email = FexUserManager.normalize_email(email),
            **kwargs
        )
        user.set_password(password)
        user.save(using = self._db)
        return user
    def create_superuser(self, email, password, **kwargs):
        user = self.create_user(email,
            password = password,
            **kwargs
        )
        user.is_admin = True
        user.save(using = self._db)
        return user
class FexUser(AbstractBaseUser):
    email = models.EmailField(
        max_length = 80,
        unique = True,
        verbose_name = _('email'),
        help_text = _('Example: email@example.com')
    )
    is_active = models.BooleanField(
        default = True,
        verbose_name = _('is active')
    )
    is_admin = models.BooleanField(
        default = False,
        verbose_name = _('is admin')
    )
    USERNAME_FIELD = 'email'
    objects = FexUserManager()
    def get_short_name(self):
        return self.email
    def __unicode__(self):
        return self.email
    def has_perm(self, perm, obj=None):
        return True
    def has_module_perms(self, app_label):
        return True
    @property
    def is_staff(self):
        return self.is_admin
    class Meta:
        verbose_name = _('User')
        verbose_name_plural = _('Users')

Форма регистрации - accounts.forms:

from django import forms
from accounts.models import FexUser
class RegistrationForm(forms.Form):
    email = forms.EmailField(label=u'Email', max_length=80)
    password1 = forms.CharField(label=u'Password', widget=forms.PasswordInput())
    password2 = forms.CharField(label=u'Password (Again)', widget=forms.PasswordInput())
    def clean_password2(self):
        if 'password1' in self.cleaned_data:
            password1 = self.cleaned_data['password1']
            password2 = self.cleaned_data['password2']
        if password1 == password2:
            return password2
        raise forms.ValidationError('Passwords do not match.')
    def clean_email(self):
        email = self.cleaned_data['email']
        if not email:
            raise forms.ValidationError('Required field')
        if FexUser.objects.filter(email=email).exists():
            raise forms.ValidationError('Email is already taken.')
        return email

Вьюха:

from django.shortcuts import render
from django.template import Context
from django.http import Http404, HttpResponseRedirect
from django.contrib.auth import logout
from customers.forms import *
from accounts.models import *

*****

def register_page(request):
if request.method == 'POST':
form = RegistrationForm(request.POST)
if form.is_valid():
user = FexUser.objects.create_user(
email=form.cleaned_data['email'],
password=form.cleaned_data['password1'],
)
return HttpResponseRedirect('/register/success/')
else:
form = RegistrationForm()
variables = Context({
'form': form
})
return render(request, 'registration/register.html',variables)

****

Отредактировано bmco@mail.ru (Июнь 24, 2014 12:39:16)

Офлайн

#2 Июнь 24, 2014 12:50:45

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Криво работает регистрация Django

        if form.is_valid():
            user = FexUser.objects.create_user(
                email=form.cleaned_data['email'],
                password=form.cleaned_data['password1'],
        )
        return HttpResponseRedirect('/register/success/')
Респонз не зависит от валидности формы. Пробельчики потерялись.



Офлайн

#3 Июнь 24, 2014 13:12:38

bmco@mail.ru
Зарегистрирован: 2014-03-11
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Криво работает регистрация Django

FishHook
Извините, но не понимаю, где потерялись пробелы.

вот мой код
def register_page(request):
    if request.method == 'POST':
        form = RegistrationForm(request.POST)
        if form.is_valid():
            user = FexUser.objects.create_user(
                email=form.cleaned_data['email'],
                password=form.cleaned_data['password1']
            )
        return HttpResponseRedirect('/register/success/')
    else:
        form = RegistrationForm()
    variables = Context({
        'form': form
    })
    return render(request, 'registration/register.html', variables)

Отредактировано bmco@mail.ru (Июнь 24, 2014 13:13:10)

Офлайн

#4 Июнь 24, 2014 13:14:56

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Криво работает регистрация Django

        if form.is_valid():
            user = FexUser.objects.create_user(
                email=form.cleaned_data['email'],
                password=form.cleaned_data['password1']
            )
            # ВОт тут вот
            return HttpResponseRedirect('/register/success/')



Офлайн

#5 Июнь 24, 2014 13:30:44

bmco@mail.ru
Зарегистрирован: 2014-03-11
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Криво работает регистрация Django

FishHook

Спасибо! Так работает! Большое спасибо!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version