前提・実現したいこと
ユーザークラスをカスタマイズし、ログイン処理をしたいのですが、authenticateのところでNoneが返ってきてしまいます
きちんとユーザークラスにはユーザーが登録されているのですが、初学者ゆえ、どこが間違っているのかがわからなく、教えていただきたいです。
どうぞよろしくお願いい申し上げます。
発生している問題・エラーメッセージ
エラーは発生しておりません
該当のソースコード
models.py
class
1 def create_user(self,username,email,grade,student_num,confirm_password ,password=None): 2 if not email: 3 raise ValueError('Enter Email') 4 user = self.model( 5 username=username, 6 email=email, 7 password=password, 8 confirm_password=confirm_password, 9 grade=grade, 10 student_num=student_num, 11 ) 12 user.set_password(password) 13 user.save(using=self._db) 14 return user 15 16 def create_superuser(self,username,email,password=None): 17 user = self.model( 18 username=username, 19 email=email, 20 ) 21 user.set_password(password) 22 user.is_staff=True 23 user.is_active=True 24 user.is_superuser=True 25 user.save(using=self._db) 26 return user 27 28class User(AbstractBaseUser,PermissionsMixin ): 29 email = models.EmailField(max_length=30, unique=True) 30 username = models.CharField(max_length=30, unique=True) 31 password = models.CharField(max_length=30,) 32 confirm_password = models.CharField(max_length=30,) 33 grade = models.CharField(max_length=20) 34 student_num = models.CharField(max_length=8) 35 is_active = models.BooleanField(default=False) 36 is_staff = models.URLField(default=False) 37 38 USERNAME_FIELD ='email' #このレコードを識別する 39 REQUIRED_FIELDS =['username']#スーパーユーザー作成時に使用する 40 41 objects = UserManager() 42 43 def __str__(self): 44 return self.email
views.py
def
1 login_form = LoginForm(request.POST or None) 2 if login_form.is_valid(): 3 username = login_form.cleaned_data.get('username') 4 password = login_form.cleaned_data.get('password') 5 user = authenticate(username=username,password=password) 6 print(user) 7 8 if user: 9 if user.is_active: 10 login(request,user) 11 return redirect('SellText:products') 12 else: 13 return HttpResponse('アカウントが有効ではありません') 14 else: 15 return HttpResponse('ユーザーが存在しません') 16 return render(request, 'login.html',context={ 17 'login_form':login_form 18 })
forms.py
class LoginForm(forms.Form): username = forms.CharField(label="名前",max_length=155) password = forms.CharField(label="パスワード", widget=forms.PasswordInput())
あなたの回答
tips
プレビュー