আমরা যে পদ্ধতিটি ব্যবহার করি তা এখানে:
- একটি
settingsপাঠযোগ্যতার জন্য একাধিক ফাইলে সেটিংসকে বিভক্ত করার মডিউল;
- একটি
.env.jsonশংসাপত্র এবং প্যারামিটারগুলি সংরক্ষণ করার জন্য ফাইল যা আমরা আমাদের গিট সংগ্রহস্থল থেকে বাদ দিতে চাই, বা এটি পরিবেশ নির্দিষ্ট;
- একটি
env.pyফাইলটি পড়ার .env.jsonফাইল
নিম্নলিখিত কাঠামো বিবেচনা:
...
.env.json # the file containing all specific credentials and parameters
.gitignore # the .gitignore file to exclude `.env.json`
project_name/ # project dir (the one which django-admin.py creates)
accounts/ # project's apps
__init__.py
...
...
env.py # the file to load credentials
settings/
__init__.py # main settings file
database.py # database conf
storage.py # storage conf
...
venv # virtualenv
...
সঙ্গে .env.jsonমত:
{
"debug": false,
"allowed_hosts": ["mydomain.com"],
"django_secret_key": "my_very_long_secret_key",
"db_password": "my_db_password",
"db_name": "my_db_name",
"db_user": "my_db_user",
"db_host": "my_db_host",
}
এবং project_name/env.py:
<!-- language: lang-python -->
import json
import os
def get_credentials():
env_file_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
with open(os.path.join(env_file_dir, '.env.json'), 'r') as f:
creds = json.loads(f.read())
return creds
credentials = get_credentials()
আমাদের নীচের সেটিংস থাকতে পারে:
<!-- language: lang-py -->
# project_name/settings/__init__.py
from project_name.env import credentials
from project_name.settings.database import *
from project_name.settings.storage import *
...
SECRET_KEY = credentials.get('django_secret_key')
DEBUG = credentials.get('debug')
ALLOWED_HOSTS = credentials.get('allowed_hosts', [])
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
...
]
if DEBUG:
INSTALLED_APPS += ['debug_toolbar']
...
# project_name/settings/database.py
from project_name.env import credentials
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': credentials.get('db_name', ''),
'USER': credentials.get('db_user', ''),
'HOST': credentials.get('db_host', ''),
'PASSWORD': credentials.get('db_password', ''),
'PORT': '5432',
}
}
এই সমাধানের সুবিধাগুলি হ'ল:
- গিট সংগ্রহস্থল পরিবর্তন না করে স্থানীয় বিকাশের জন্য ব্যবহারকারী নির্দিষ্ট শংসাপত্র এবং কনফিগারেশন ;
- পরিবেশ নির্দিষ্ট কনফিগারেশন , আপনি উদাহরণস্বরূপ তিনটি পৃথক পরিবেশ
.env.jsonযেমন দেব, স্থবির এবং উত্পাদন সহ তিনটি পৃথক পরিবেশ থাকতে পারে;
- শংসাপত্রগুলি সংগ্রহস্থলের মধ্যে নেই
আমি আশা করি এটি সাহায্য করে, আপনি যদি এই সমাধান সহ কোনও সতর্কতা দেখতে পান তবে আমাকে জানান।