【发布时间】:2020-05-31 04:03:22
【问题描述】:
当我尝试启动 gunicorn 时,出现此错误:
文件“/home/django-project/projectfolder/settings.py”,第 270 行,在 ALLOWED_HOSTS = get_allowed_hosts(DATABASES['default']) 文件“/home/django-project/projectfolder/allowed_hosts.py”,第 16 行,在 get_allowed_hosts sites_query = connection.execute("SELECT domain FROM django_site") AttributeError:“psycopg2.extensions.connection”对象没有属性“执行”
from .settings import *
DEBUG = False
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'projectname_settings',
'USER': '******',
'PASSWORD': '******',
'HOST': 'localhost',
'PORT': '',
}
}
ALLOWED_HOSTS = [
"mydomain.com",
] + get_allowed_hosts(DATABASES['default'])
Allowed_hosts.py
def get_allowed_hosts(db_params):
connection = None
if db_params['ENGINE'] == 'django.db.backends.postgresql_psycopg2':
import psycopg2
connection = psycopg2.connect(user=db_params['USER'],
password=db_params['PASSWORD'],
host=db_params['HOST'],
port=db_params['PORT'],
database=db_params['NAME'])
elif db_params['ENGINE'] == 'django.db.backends.sqlite3':
import sqlite3
connection = sqlite3.connect(db_params['NAME'])
if connection is not None:
sites_query = connection.execute("SELECT domain FROM django_site")
sites_result = sites_query.fetchall()
sites = ["." + site[0] for site in sites_result]
print("Allowed hosts")
print(sites)
return sites
【问题讨论】:
-
DOMAIN是 SQL 中的(非保留)关键字。最好不要将其用作标识符。 postgresql.org/docs/12/sql-keywords-appendix.html -
@wildplasser 谢谢,你有没有看到任何会导致 502 错误的东西?这种允许主机的机制是否需要特殊的 nginx/wsgi 配置?
标签: django postgresql gunicorn psycopg2 django-settings