在 Python 开发中,.env
文件通常用于存储环境变量,例如数据库配置、API 密钥、调试模式等。这样可以避免将敏感信息直接写在代码中,提高安全性和可维护性。下面是如何创建和使用 .env
文件的详细步骤。
1. 安装 python-decouple
python-decouple
是一个常用的库,用于加载 .env
文件中的环境变量。首先,确保你已经安装了 python-decouple
:
pip install python-decouple
2. 创建 .env
文件
在你的项目根目录下创建一个 .env
文件。文件名是 .env
,没有前缀。这个文件用于存储你的环境变量。
示例 .env
文件
# .env 文件示例
# Django secret key
SECRET_KEY=django-insecure-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# Debug 模式
DEBUG=True
# 数据库配置
DB_NAME=mydatabase
DB_USER=mydatabaseuser
DB_PASSWORD=mypassword
DB_HOST=localhost
DB_PORT=3306
# 其他配置
API_KEY=your_api_key_here
3. 修改 settings.py
文件
在 Django 项目的 settings.py
文件中,使用 python-decouple
来加载 .env
文件中的变量。
示例 settings.py
文件
from pathlib import Path
from decouple import config, Csv
# 项目基础路径
BASE_DIR = Path(__file__).resolve().parent.parent
# 安全密钥
SECRET_KEY = config('SECRET_KEY', default='django-insecure-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')
# 调试模式
DEBUG = config('DEBUG', default=False, cast=bool)
# 允许的主机
ALLOWED_HOSTS = config('ALLOWED_HOSTS', default='', cast=Csv())
# 已安装的应用程序
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog', # 你的应用
]
# 中间件
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
# 根 URL 配置
ROOT_URLCONF = 'myproject.urls'
# 模板配置
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
WSGI_APPLICATION = 'myproject.wsgi.application'
# 数据库配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': config('DB_NAME'),
'USER': config('DB_USER'),
'PASSWORD': config('DB_PASSWORD'),
'HOST': config('DB_HOST'),
'PORT': config('DB_PORT', cast=int),
}
}
# 密码验证器
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',
},
]
# 国际化
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True
# 静态文件 (CSS, JavaScript, Images)
STATIC_URL = '/static/'
# 默认的主键字段类型
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
4. 使用环境变量
你可以在项目中的其他地方使用 config
函数来加载环境变量。例如,加载 API 密钥:
import requests
from decouple import config
API_KEY = config('API_KEY')
response = requests.get('https://api.example.com/data', headers={'Authorization': f'Bearer {API_KEY}'})
5. .gitignore 文件中忽略 .env
为了确保你的 .env
文件不会被提交到版本控制系统(如 Git),请在你的 .gitignore
文件中添加 .env
:
.gitignore
文件示例
# 忽略 .env 文件
.env
总结
通过这些步骤,你可以创建并使用 .env
文件来管理你的 Django 项目中的环境变量。使用 .env
文件可以提高安全性和灵活性,并且在不同的环境(如开发、测试、生产)中更容易管理配置。