Как войти в систему с помощью учетной записи 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 для получения дополнительной информации, и если вы застряли, я буду рад помочь

Вернуться на верх