我的问题
你好,我的网站从我的Django-envrion文件中获取信息到settings.py时出现问题。我能够在我的开发计算机上使用相同的配置完美地打开localhost:8000
(只是将其设置为关闭并使用本地DB)。虽然当我 Boot 我的服务器时,我登录到postgres时遇到了问题,但尽管环境文件设置为0
,调试也设置为on。还有一些奇怪的地方,它可能会获取数据库名称和数据库用户,因为这些都在环境文件中。
下面是显示的错误(尽管调试是关闭的,就像我之前提到的,虽然它可以读取一些属性,但我相信考虑到它知道什么数据库和用户的名称):
OperationalError at /
connection to server at "localhost" (::1), port 5432 failed: FATAL: password authentication failed for user "DBuser"
connection to server at "localhost" (::1), port 5432 failed: FATAL: password authentication failed for user "DBuser"
Request Method: GET
Request URL: https://[REDACTED].com/
Django Version: 4.2.3
Exception Type: OperationalError
Exception Value:
connection to server at "localhost" (::1), port 5432 failed: FATAL: password authentication failed for user "DBuser"
connection to server at "localhost" (::1), port 5432 failed: FATAL: password authentication failed for user "DBuser"
Exception Location: /home/[REDACTED]/virtenv/lib/python3.10/site-packages/psycopg2/__init__.py, line 122, in connect
Raised during: jobs.views.home
Python Executable: /home/[REDACTED]/virtenv/bin/python
Python Version: 3.10.12
Python Path:
['/home/[REDACTED]/WebPortfolio/portfolio_Proj',
'/home/[REDACTED]/virtenv/bin',
'/usr/lib/python310.zip',
'/usr/lib/python3.10',
'/usr/lib/python3.10/lib-dynload',
'/home/[REDACTED]/virtenv/lib/python3.10/site-packages']
Server time: Thu, 19 Oct 2023 01:02:58 +0000
Error during template rendering
In template /home/[REDACTED]/WebPortfolio/portfolio_Proj/jobs/templates/jobs/home.html, error at line 6
connection to server at "localhost" (::1), port 5432 failed: FATAL: password authentication failed for user "DBuser" connection to server at "localhost" (::1), port 5432 failed: FATAL: password authentication failed for user "DBuser"
尝试
因此,我试图解决这个问题的方法是尝试查看我的python环境是否与我的开发环境匹配,它确实匹配。
Package Version
----------------- -------
asgiref 3.7.2
Django 4.2.3
django-environ 0.11.2
gunicorn 21.2.0
packaging 23.1
Pillow 10.0.0
pip 23.2.1
psycopg2-binary 2.9.6
setuptools 68.0.0
sqlparse 0.4.4
typing_extensions 4.7.1
wheel 0.40.0
接下来,我尝试将django-env文件中的信息硬编码到设置中。这样做很有效,所以我恢复了更改,并检查我的导入和django-env路径是否正确。下面是我的settings.py
的一个片段:
import environ
import os
from pathlib import Path
BASE_DIR = Path(__file__).resolve().parent.parent
# Django Enviroment file path
env = environ.Env()
env.read_env(os.path.join(BASE_DIR, '.djenv/', '.host'))
SECRET_KEY = env("KEY")
DEBUG = env("DEBUG")
...
DATABASES = {
'default': {
'ENGINE':env('DB_ENGINE'),
'NAME':env('DB_NAME'),
'USER':env('DB_USER'),
'PASSWORD':env('DB_PASS'),
'HOST':env('DB_HOST'),
'PORT':env('DB_PORT'),
}
}
下面是我的django-env文件[proj_base_dir]/.djenv/.host
:
DEBUG=0
KEY=[REDACTED]
DB_ENGINE=django.db.backends.postgresql
DB_NAME=[REDACTED]
DB_USER=[REDACTED]
DB_PASS=[REDACTED]
DB_HOST=localhost
DB_PORT=5432
我觉得我错过了一些东西,但我对Django没有很强的把握。有人有什么想法吗?
1条答案
按热度按时间luaexgnf1#
在使用Django-Environ时,请确保您知道注解字符,例如
#
。如果你的用户名、密码或其他任何你试图从Django环境文件调用的东西,请确保不要使用#
,因为它会注解掉后面的所有内容。或者,如果你必须使用#
,请在它周围使用引号。下面是一个示例: