1
私はカスタムユーザーmodulで助けていただきありがとうございます。私はdjango documentationのこの例に類似してそれを設定しました。私は以下の問題を抱えています:Djangoの管理者にログイン
- 管理者インターフェイスにログインできません。ログインページが表示されますが、シェルで./manage createsuperuserを使用してユーザーを作成した後で、資格情報を受け入れません。
- スーパーユーザーを作成するときは、最初にパスワードを平文で保存します。私はデータベースを見て、クリアテキストでパスワードを見つけました。これはcreate_superuser()から来ていると思いますが、user.set_password()は使用されていませんがpassword = passwordです(djangoのドキュメントの例のように、なぜそうするのですか?)。私はそれをシェルで変更してから暗号化しました。まだログインしてもうまくいきません。 認証/ models.py
class UserManager(BaseUserManager): def create_user(self, email, password=None, **kwargs): if not email: raise ValueError('Users must have an email address') user = self.model( email=self.normalize_email(email), **kwargs ) user.set_password(password) user.save(using=self._db) return user def create_superuser(self, email, password, **kwargs): user = self.model( email, password=password, **kwargs ) user.is_admin=True user.save(using=self._db) return user
と
class MyUser(AbstractBaseUser): # use this for auth and sessions # REQUIRED_FIELDS = ['password'] session = models.ForeignKey( 'sessions.Session', verbose_name='Session', blank=True, null=True, ) email = models.EmailField(unique=True, primary_key=True) #password = forms.CharField(max_length=30, widget=forms.PasswordInput()) #render_value=False first_name = models.CharField(max_length=255) last_name = models.CharField(max_length=255) signed_up_since = models.DateTimeField('Signed up since', default=timezone.now()) is_active = models.BooleanField(default=True) is_admin = models.BooleanField(default=False) objects = UserManager() USERNAME_FIELD = 'email' def __str__(self): return self.email def get_full_name(self): return self.email def get_short_name(self): return self.email @property def is_staff(self): "Is the user a member of staff?" # Simplest possible answer: All admins are staff return self.is_admin
私は、設定を編集した:
AUTH_USER_MODEL = "authentication.MyUser"
は私がカスタムを使用していけない私のコードは以下の通りである
セッションのバックエンドまたは認証のバックエンドでは、migrシェルは私にこれを与える:
>>> user.is_staff
True
アイデアは何ですか?どうもありがとう!