إعدادات Django استنادًا إلى IP أو اسم المضيف
سؤال
أرغب في الحصول على شيء ما في إعداداتي
if ip in DEV_IPS:
SOMESETTING = 'foo'
else:
SOMESETTING = 'bar'
هل هناك طريقة سهلة للحصول على IP أو اسم المضيف - أيضًا - هل هذه فكرة سيئة؟
المحلول
import socket
socket.gethostbyname(socket.gethostname())
ومع ذلك ، أوصي ضد هذا وأحافظ بدلاً من ذلك على ملف إعدادات متعددة لكل بيئة تعمل معها.
settings/__init__.py
settings/qa.py
settings/production.py
__init__.py
لديه كل ما تبذلونه من الإعدادات الافتراضية. على قمة qa.py
, وأي ملف إعدادات أخرى ، يحتوي السطر الأول على:
from settings import *
تليها أي تجاوزات مطلوبة لتلك البيئة بالذات.
نصائح أخرى
إحدى الطرق التي تستخدمها بعض المتاجر هي أن يكون هناك متغير بيئي على كل جهاز. ربما تسمى "البيئة". في أنظمة Posix يمكنك القيام بشيء مثل ENVIRONMENT=production
في ملف المستخدم الخاص بالمستخدم (سيكون هذا مختلفًا قليلاً لكل قذيفة ونظام التشغيل). ثم في settings.py
يمكنك أن تفعل شيئًا كهذا:
import os
if os.environ['ENVIRONMENT'] == 'production':
# Production
DATABASE_ENGINE = 'mysql'
DATABASE_NAME = ....
else:
# Development
لا تنتمي إلى StackOverflow