Как войти в систему с помощью учетной записи Gmail в Django
I am having a Login button with Gmail account in Django....Here when I am login with Gmail account means I want extra add information from the user and I want to Store that Information in the auth_user table. Please Help me
Если я войду в систему с помощью Gmail, я буду перенаправлен на страницу регистрации с дополнительной информацией. Он успешно войдет, но я не знаю, как сохранить дополнительную информацию в таблице auth_user.Здесь у меня есть дополнительная форма регистрации с дополнительной информацией для добавления пользователя, но я не знаю, как сохранить эту информацию в таблице auth_user
в Postgresql.Пожалуйста, помогите мне, я застрял здесь, пожалуйста, помогите мне кто-нибудь
Для решения вашей проблемы вам нужно создать модель пользователя costum вот одна из моих моделей в качестве примера:
в вашем файле model.py добавьте следующее :
class CustomAccountManager(BaseUserManager):
def create_superuser(self, email, username, password, **other_fields):
other_fields.setdefault('is_staff', True)
other_fields.setdefault('is_superuser', True)
other_fields.setdefault('is_active', True)
if other_fields.get('is_staff') is not True:
raise ValueError(
'Superuser must be assigned to is_staff=True.')
if other_fields.get('is_superuser') is not True:
raise ValueError(
'Superuser must be assigned to is_superuser=True.')
return self.create_user(email, username, password, **other_fields)
def create_user(self, email, username, password, **other_fields):
if not email:
raise ValueError(_('You must provide an email address'))
email = self.normalize_email(email)
user = self.model(email=email, username=username, **other_fields)
user.set_password(password)
user.save()
return user
class Account(AbstractBaseUser, PermissionsMixin):
email = models.EmailField(_('email address'), unique=True)
username = models.CharField(_('username'),max_length=50, unique=True)
first_name = models.CharField(max_length=150, blank=True)
last_name = models.CharField(_('Last name'),max_length=50,blank=True)
Phone =models.CharField(_('Phone Number'),max_length=10,blank=True)
City = models.CharField(max_length=10,blank=True)
address = models.CharField(_('Address'), max_length=150, blank=True)
is_staff = models.BooleanField(default=False)
is_active = models.BooleanField(default=True)
is_admin_province = models.BooleanField(default=False)
objects = CustomAccountManager()
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['username']
def __str__(self):
return self.username
и затем, чтобы иметь возможность добавлять пользователя из админки django добавьте этот код в ваш admin.py :
class UserAdminConfig(UserAdmin):
model = Account
search_fields = ('email','City')
list_filter = ('is_active', 'is_staff')
list_display = ('email', 'username',
'is_active', 'is_staff')
ordering = ('-id',)
fieldsets = (
(None, {'fields': ('email','username','password')}),
('Permissions', {'fields': ('is_staff', 'is_active')}),
('Personal', {'fields': ('first_name','last_name','Phone','City','address',)}),
)
formfield_overrides = {
Account.address: {'widget': Textarea(attrs={'rows': 50, 'cols': 400})},
Account.province: {'widget': TextInput },
}
add_fieldsets = (
(None, {
'classes': ('wide',),
'fields': ('email','username','password1', 'password2', 'is_active', 'is_staff')}
),
)
admin.site.register(Account, UserAdminConfig)
Я знаю, что не предоставил много деталей, но вы можете проверить django doc для получения дополнительной информации, и если вы застряли, я буду рад помочь