質問するログイン新規登録

Q&A

0回答

188閲覧

カスタムユーザでの管理画面ログイン

退会済みユーザー

退会済みユーザー

総合スコア0

Django

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Python

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

0グッド

0クリップ

投稿2023/01/17 15:14

0

0

前提

Django2.1(授業用の環境)
Python3.6
Eclipse4.1
参考にしたサイト様
https://daeudaeu.com/django-abstractbaseuser/

実現したいこと

  • カスタムユーザを用いて、管理画面に入れるようにしたい。

発生している問題・エラーメッセージ

カスタムユーザを用いてログインできない。

該当のソースコード

model.py

python

1class UserManager(BaseUserManager): 2 def create_user(self, email, password=None,**extra_fields): 3 if not email: 4 raise ValueError('Users must have an email address') 5 6 user = self.model( 7 email=self.normalize_email(email), 8 ) 9 user.set_password(password) 10 user.save(using=self._db) 11 return user 12 13 def create_superuser(self, email, password,**extra_fields): 14 user = self.create_user( 15 email=self.normalize_email(email), 16 password=password, 17 ) 18 19 user.is_admin =True 20 user.is_staff =True 21 user.is_superuser =True 22 user.isSystemAdmin =True 23 user.isContractAdmin=True 24 25 user.save(using=self._db) 26 return user 27 28 29#利用者 30class User(AbstractBaseUser,PermissionsMixin): 31 empnum = models.CharField(validators=[MinLengthValidator(6), 32 MaxLengthValidator(6), 33 RegexValidator(r'^[0-9]*$','設定できるのは数字のみです')], 34 max_length=6, 35 verbose_name='番号', 36 primary_key=True, 37 unique=True) 38 password = models.CharField(max_length=100, 39 verbose_name='パスワード') 40 name = models.CharField(max_length=30, 41 verbose_name='氏名') 42 email = models.EmailField(max_length=150, 43 verbose_name='メールアドレス') 44 ChoiceList = ( 45 (False, '0:権限なし'), 46 (True, '1:権限あり'), 47 ) 48 choiceA = models.BooleanField(choices=ChoiceList, 49 verbose_name='A', 50 default=False) 51 choiceB = models.BooleanField(choices=ChoiceList, 52 verbose_name='B', 53 default=False) 54 55 first_name = None 56 first_name = None 57 last_name = None 58 date_joined = None 59 groups = None 60 last_login= None 61 is_superuser = models.BooleanField(default=False) 62 is_staff = models.BooleanField(default=True) 63 is_admin = models.BooleanField(default=False) 64 is_active = models.BooleanField(default=True) 65 66 username = "empnum" 67 USERNAME_FIELD = "empnum" 68 objects = UserManager() 69 REQUIRED_FIELDS = ["email"] 70 71 class Meta: 72 verbose_name='利用者' 73 def __str__(self): 74 return self.name

試したこと

カスタムユーザーモデルを使用するように、setting.pyのAUTH_USER_MODELを変更済み
admin.pyにて、admin.site.register(User)を追加済み。

補足情報(FW/ツールのバージョンなど)

把握している事

Djangoの管理サイトにカスタムユーザを使用して入る為には、

  1. カスタムユーザの作成
  2. カスタムユーザモデルを使用するようにsetting.pyの変更
  3. 管理サイトの設定を変更(admin.py)
  4. カスタムユーザモデルに必要なメソッド(is_staff()など)の追加

が必要だと考ています。

現状

createsuperuser() で番号、メールアドレス、パスワードでの登録は可能でした。
makemigration、migrationを行いました。

上記で不足している点、改善すべき点を教えて頂きたいです。

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

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

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

guest

この質問の投稿者はすでに退会しているため、質問者からの返信がない点にご留意ください。

この質問の投稿者はすでに退会しているため、質問者からの返信やベストアンサーの選定がない点にご留意ください。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.25%

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

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

質問する

関連した質問