質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

0回答

633閲覧

ユーザークラスをカスタマイズし、ログイン処理をしたいのですが、うまくいきません。

Mitsu_

総合スコア10

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/05/10 14:29

前提・実現したいこと

ユーザークラスをカスタマイズし、ログイン処理をしたいのですが、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())

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問