سؤال

أرغب في الحصول على شيء ما في إعداداتي

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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top