Django.db.utils.OperationalError: FATAL: роль "user" не существует

Я пытаюсь аутентифицировать пользователей с помощью django и postgresql. Мой проект докеризирован. Когда я запускаю docker-compose up --build, я получаю ошибку, говорящую:

django.db.utils.OperationalError: FATAL: роль "django2" не существует

.

Я знаю, что ошибка говорит, что роль django2 не существует, но она существует. Если я запускаю CREATE ROLE django2; я получаю ошибку, говорящую ERROR: role "django2" already exists.

Мой раздел DATABASE в settings.py:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'zane_db',
        'USER': 'django2',
        'PASSWORD': 'django2',
        'HOST': 'db',
        'PORT': 5432
    }
}

Мой вид регистрации:

letters = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"]
numbers = ["1", "2", "3", "4", "5", "6", "7", "8", "9",]
characters = letters + numbers
length = 5
token = "".join(random.sample(characters, length))

def signup(request):
    if request.method == "POST":
        context = {'has_error': False, 'data': request.POST}
        global password
        global password2
        global email
        global username
        email = request.POST.get('email')
        username = request.POST.get('username')
        password = request.POST.get('password')
        password2 = request.POST.get('password2')

        body = render_to_string('authentication/email/email_body.html', {
            'username': username,
            'token': token,
        })
        send_mail(
            "Email Confirmation",
            body,
            'tadejtilinger@gmail.com',
            [email]
        )
        return redirect('email-confirmation')
    return render(request, 'authentication/signup.html')


def email_confirmation(request):

    if request.method == "POST":
        context = {'has_error': False, 'data': request.POST}

        code = request.POST.get('code')
        
        if code == token:
            if len(password) < 8:
                ############custom message
                context['has_error'] = True

            if password != password2:
                ############custom message
                context['has_error'] = True

            if not validate_email(email):
                ############custom message
                context['has_error'] = True

            if not username:
                ############custom message
                context['has_error'] = True

            if models.CustomUser.objects.filter(username=username).exists():
                ############custom message
                context['has_error'] = True

                return render(request, 'authentication/signup.html', context, status=409)

            if models.CustomUser.objects.filter(email=email).exists():
                ############custom message
                context['has_error'] = True

                return render(request, 'authentication/signup.html', context, status=409)

            if context['has_error']:
                return render(request, 'authentication/signup.html', context)

            user = models.CustomUser.objects.create_user(username=username, email=email)
            user.set_password(password)
            user.save()

            user = authenticate(request, username=username, password=password)
            login(request)

    return render(request, 'authentication/email/email_confirmation.html')

вам нужно установить POSTGRES_USER и POSTGRES_PASSWORD для вашей базы данных. Измените вашу запись в docker-compose на эту.

    db:
      image: postgres:11
      volumes:
        - postgres_data:/var/lib/postgresql/data/
      environment:
        POSTGRES_HOST_AUTH_METHOD: trust
        POSTGRES_USER: django2
        POSTGRES_PASSWORD: django2
      ports:
        - "5432:5432"
Вернуться на верх