【发布时间】:2018-05-20 20:26:49
【问题描述】:
我想强制 Django 使用 SSL 连接到我的 postgres 数据库。
This question 表示我需要将sslmode='require' 传递给 psycopg2 连接调用。如何将此添加到 Django 的数据库参数中?
【问题讨论】:
标签: django postgresql
我想强制 Django 使用 SSL 连接到我的 postgres 数据库。
This question 表示我需要将sslmode='require' 传递给 psycopg2 连接调用。如何将此添加到 Django 的数据库参数中?
【问题讨论】:
标签: django postgresql
将'OPTIONS': {'sslmode': 'require'}, 添加到您的数据库配置中。例如:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': "db_name",
'USER': "db_username",
'PASSWORD': "db_password",
'HOST': "db_host",
'OPTIONS': {'sslmode': 'require'},
},
}
作为jklingen92 points out,如果您使用数据库 URL,例如通过 django-environ,请将 ?sslmode=require 添加到数据库 URL 的末尾。例如:
postgres://<DB_USERNAME>:<DB_PASSWORD>@<DB_HOST>:<PORT>/<DB_NAME>?sslmode=require
【讨论】:
如果您正在配置数据库 URL,则可以将选项作为查询参数传递:
DATABASE_URL=postgres://USER:PASSWORD@HOST:PORT/NAME?sslmode=require
这适用于Django Configurations 和Django Environ。
Django Configurations 是基于dj_database_url 构建的,所以你也可以像@frmdstryr 所说的那样传递ssl_require=True:
DATABASES = values.DatabaseURLValue(environ_required=True, ssl_require=True)
【讨论】:
如果您使用的是dj_database_url,您可以传递ssl_require=True,它会为您设置选项。
import dj_database_url
DATABASES['default'] = dj_database_url.config(ssl_require=True)
【讨论】: