es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Personalización de Django Admin para agregar usuarios con contraseña en blanco.

Estoy creando una aplicación web Django con una política de autenticación de usuarios personalizada: solo el superusuario tiene una contraseña y el campo de identificación de los usuarios es el campo de correo electrónico. Los usuarios normales solo pueden iniciar sesión mediante el protocolo OAuth, por lo que no necesito almacenar contraseñas para ellos. Creé un usuario personalizado mediante la anulación y extensión de la clase AbstractBaseUser.

¿Hay alguna manera en Django Admin de permitir agregar/editar usuarios con un campo de contraseña en blanco (contraseña no utilizable)?
Gracias.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, hay una manera de permitir agregar/editar usuarios con un campo de contraseña en blanco en Django Admin. Puedes hacer esto creando un formulario personalizado para la creación y edición de usuarios, y estableciendo que el campo de contraseña sea opcional. Aquí tienes un ejemplo:

    from django.contrib.auth.admin import UserAdmin
    from django.contrib.auth.forms import UserCreationForm, UserChangeForm
    from django.contrib.auth.models import User
    
    class CustomUserCreationForm(UserCreationForm):
        password1 = None
        password2 = None
    
        class Meta:
            model = User
            fields = ('username', 'email',)
    
    class CustomUserChangeForm(UserChangeForm):
        password = None
    
        class Meta:
            model = User
            fields = '__all__'
    
    class CustomUserAdmin(UserAdmin):
        add_form = CustomUserCreationForm
        form = CustomUserChangeForm
    
    admin.site.unregister(User)
    admin.site.register(User, CustomUserAdmin)
    

    En este ejemplo, creamos dos formularios personalizados para la creación y edición de usuarios, y establecemos que el campo de contraseña sea None. Luego creamos una clase CustomUserAdmin que utiliza los nuevos formularios. Finalmente, anulamos el registro del UserAdmin predeterminado y registramos el nuevo CustomUserAdmin en su lugar. Esto te permite agregar y editar usuarios en Django Admin sin proporcionar una contraseña.

Comments are closed.