我想使用Facebook登錄以及可選的電子郵件/密碼登錄/註冊爲時尚技術應用程序的用戶創建註冊。關於在Django中創建自定義用戶模型的指導
我被困在如何完成這個過程(從博客告訴我矛盾的信息和Django文檔沒有解釋我非常需要的東西太多的例子)。
所以我的問題是:
- 我如何創建我的模型顯示用戶能夠登錄通過自定義設計接口(由我)/註冊,而從管理員用戶地區進行採伐,禁止他們併成爲超級用戶,但允許我(管理員)查看和控制超級用戶的常規django管理區域中的用戶。
我猜我必須先用模型/邏輯首先所以開始:
這裏是我的models.py到目前爲止我還添加字段對於用戶來說,他們將不得不從他們的個人資料存取一旦正式登錄。但當然首先他們會被要求用他們的電子郵件,用戶名和密碼登錄(如果選擇密碼/電子郵件登錄或註冊)。
Models.py:
所有的from django.contrib.auth.models import AbstractBaseUser, BaseUserManager
from django.db import models
#custom user model fro Users
class MyUser(AbstractBaseUser):
username = models.CharField(max_length=40, db_index=True)
first_name = models.CharField(max_length=254, blank=True)
last_name = models.CharField(max_length=254, blank=True)
email = models.EmailField(max_length=254, null=False, unique=True, blank=True)
birthday = models.DateField(null=True, blank=True)
city = models.CharField(max_length=50, blank=True)
state = models.CharField(max_length=50, blank=True)
user_title = models.CharField(max_length=254, blank=True)
user_points = models.IntegerField(null=False, blank=True)
avatar = FileField()
#admin level and additional infomation
is_active = models.BooleanField(default=True)
is_admin = models.BooleanField(default=False)
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['email', 'username']
class MyUserManager(object):
"""Creates and saves a User with the given first_name, last_name, birthday,"""
def create_user(self, email, username, first_name, last_name, birthday, city, state, use
r_title, user_points, avatar, password=None):
if not email:
raise ValueError('Users must have an email address')
user = self.model(
email=MyUserManager.normalize_email(email),
first_name=first_name,
last_name=last_name,
birthday=birthday,
city=city
state=state,
user_title=user_title,
user_points=user_points,
avatar=avatar,
)
user.set_password(password)
user.save(using=self._db)
return user
def create_superuser(self, email, first_name, last_name, birthday, city, state, user_title, user_points, avatar, password):
user = self.create_user(email,
password=password,
first_name=first_name,
last_name=last_name,
birthday=birthday,
city=city
state=state,
user_title=user_title,
user_points=user_points,
avatar=avatar,
)
user =
不要創建自己的用戶模型,創建一個用戶配置文件,並使用'OneToOneField'與Django的'User'對象。那麼一切都將開箱即用。 – Martol1ni