繁体   English   中英

在heroku上部署我的django项目时如何解决这个错误“连接到本地主机失败”

[英]How to solve this error "connection to local host failled " while deploying my django project on heroku

我正在使用 Django 制作 Facebook 应用程序,并希望在 Heroku 上部署我的项目。 在部署我的项目时,我使用解耦模块将重要数据放入 .env 文件中。 我的 settings.py 文件如下所示:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': config('DB_NAME'),
        'USER':  config('DB_USER'),
        'PASSWORD' : config('DB_PASSWORD'),
        'HOST' : config('DB_HOST'),
        'PORT': '5432',

    }
}


AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]


USE_I18N = True

USE_TZ = True


STATIC_URL = 'static/'
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]
STATIC_ROOT  =  os.path.join(BASE_DIR, 'assets')
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'

# Default primary key field type

我的 .env 文件看起来像这样

SECRET_KEY=#####

DB_NAME=#######
DB_USER=########
DB_PASSWORD=#######
DB_HOST=#########

我正面临这个错误:

OperationalError at /login
connection to server at "localhost" (127.0.0.1), port 5432 failed: Connection refused
    Is the server running on that host and accepting TCP/IP connections?
Request Method:    POST
Request URL:    https://facebook-django-akhil.herokuapp.com/login
Django Version:    4.0.6
Exception Type:    OperationalError
Exception Value:
connection to server at "localhost" (127.0.0.1), port 5432 failed: Connection refused
    Is the server running on that host and accepting TCP/IP connections?
Exception Location:    /app/.heroku/python/lib/python3.10/site-packages/psycopg2/init.py, line 122, in connect
Python Executable:    /app/.heroku/python/bin/python
Python Version:    3.10.5
Python Path:
['/app/.heroku/python/bin',
 '/app',
 '/app/.heroku/python/lib/python310.zip',
 '/app/.heroku/python/lib/python3.10',
 '/app/.heroku/python/lib/python3.10/lib-dynload',
 '/app/.heroku/python/lib/python3.10/site-packages']
Server time:    Thu, 14 Jul 2022 13:44:31 +0000

您还需要创建一个数据库来配合您的应用程序。 由于您已经在使用 Heroku,您可以将 Heroku Postgres 用作应用程序插件。

要在免费层上为您的应用创建数据库:

heroku addons:create heroku-postgresql:hobby-dev

现在,Heroku 将自动为您的应用注入DATABASE_URL环境变量,因此您需要在应用中使用该信息来连接数据库:

# Parse database configuration from $DATABASE_URL
import dj_database_url

DATABASES = {
  'default': dj_database_url.config()
}

对于您的本地开发环境,您可以从.env中删除DB_NAMEDB_USER和其他DB_XXX环境变量,并将DATABASE_URL=postgres://username:password@localhost/dbname添加到您的.env中,填写正确的用户名、密码,当然还有 dbname。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM