Ошибка `django.db.utils.OperationalError: connection to server at "localhost" (::1), port 5432 failed: Connection refused` указывает на то, что ваша Django-приложение не может установить соединение с сервером PostgreSQL. Это может произойти по нескольким причинам:
1. **Сервер PostgreSQL не запущен**:
- Убедитесь, что сервер PostgreSQL запущен. Вы можете проверить это, выполнив команду:
```bash
sudo service postgresql status
```
- Если сервер не запущен, запустите его:
```bash
sudo service postgresql start
```
2. **Проблемы с настройкой TCP/IP**:
- Проверьте файл конфигурации PostgreSQL (`postgresql.conf`). Найдите строку, которая отвечает за прослушивание подключений:
```plaintext
listen_addresses = 'localhost'
```
- Убедитесь, что эта строка не закомментирована. Перезапустите сервер после внесения изменений:
```bash
sudo service postgresql restart
```
3. **Настройки брандмауэра или сетевые проблемы**:
- Проверьте, нет ли ограничений на уровне брандмауэра, которые могут блокировать доступ к порту 5432. Для этого можно временно отключить брандмауэр и попробовать подключиться снова.
4. **Неправильные параметры подключения**:
- Проверьте, правильно ли указаны имя пользователя и пароль в строке подключения. Убедитесь, что пользователю разрешено подключаться к указанной базе данных.
- Попробуйте подключиться к базе данных напрямую, используя `psql`, чтобы проверить учетные данные.
5. **Настройки хоста**:
- Из-за различных конфигураций у вас может быть несколько интерфейсов (например, `localhost` и `127.0.0.1`). Попробуйте изменить строку подключения в файле `.env`, указав IP:
```python
DATABASE_URL='postgres://user:[email protected]:5432/db'
```
6. **Проблемы с сокетами**:
- В некоторых случаях PostgreSQL может быть настроен на использование сокетов вместо TCP/IP для локальных подключений. Если так, убедитесь, что ваша Django-приложение настроено на правильный хост.
Как только вы проверите эти моменты и убедитесь, что сервер работает и слушает на нужном порту, ошибка должна исчезнуть.