Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Почему я не могу авторизоваться сразу после регистрации? [RSS Feed]

#1 Март 23, 2017 19:51:29

mikefromru
Зарегистрирован: 2016-07-02
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Почему я не могу авторизоваться сразу после регистрации?

Новый пользователь записываеться в базу, но не авторизуеться.Я получаю ошибку “'AnonymousUser' object has no attribute '_met”.

forms.py

 from django import forms
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import User
from django.db import models
class RegistrationForm(UserCreationForm):
    email = forms.EmailField(required=True,   widget=forms.TextInput(attrs={'placeholder': 'E-mail'}))
    class Meta:
        model = User
        fields = ['username']
    def clean_email(self):
        email = self.cleaned_data['email']
        try:
            User.objects.get(email=email)
        except User.DoesNotExist:
            return email
        raise forms.ValidationError('email already exist')
    def save(self, commit=True):
        user = super(RegistrationForm, self).save(commit=False)
        user.username = self.cleaned_data['email']
        user.email = self.cleaned_data['email']
        if commit:
            user.is_active = False
        user.save()
        return user

views.py
 from django.shortcuts import render, HttpResponseRedirect
from django.contrib import auth
from .forms import RegistrationForm
def register(request):
    if request.method == "POST":
        form = RegistrationForm(request.POST)
        if form.is_valid():
            user = form.save()
            # user.set_password()
            user =   auth.authenticate(username=form.cleaned_data.get('username'), password=form.cleaned_data.get('password1'))
        auth.login(request, user)
        return HttpResponseRedirect('/profile')
    else:
         form = RegistrationForm()
    return render(request, 'fighter/register.html', {'form': form})   
Авторизация работала до того пока я не добавил поле емаил для регистрации.
Python 3.5 and Django1.10

Отредактировано mikefromru (Март 23, 2017 20:57:23)

Офлайн

#2 Март 27, 2017 19:16:17

inoks
От: Russia
Зарегистрирован: 2012-12-11
Сообщения: 343
Репутация: +  35  -
Профиль   Адрес электронной почты  

Почему я не могу авторизоваться сразу после регистрации?

Форма точна валидная?

Офлайн

#3 Март 28, 2017 04:37:53

mikefromru
Зарегистрирован: 2016-07-02
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Почему я не могу авторизоваться сразу после регистрации?

inoks
Форма точна валидная?
Фиг знает.

Офлайн

#4 Март 30, 2017 12:33:24

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

Почему я не могу авторизоваться сразу после регистрации?

         if commit:
            user.is_active = False
Объясните зачем вы сделали пользователя неактивным? И как вы хотите его залогинить, если он неактивный?



Офлайн

  • Начало
  • » Django
  • » Почему я не могу авторизоваться сразу после регистрации?[RSS Feed]

Board footer

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

Powered by DjangoBB

Lo-Fi Version