2011-03-11 23 views
6

मैं एक बहु-साइट परियोजना के लिए Django का उपयोग करने की योजना बना रहा हूं, जहां प्रत्येक साइट अधिकतर स्वतंत्र है, लेकिन सभी साइटों पर कुछ मॉडल साझा करेगी।एकल स्थापना, एकाधिक डोमेन और ऐप्स?

मुझे आश्चर्य है कि प्रत्येक Django 'ऐप' की अपनी साइट बनाने के लिए कोई तरीका है, अद्वितीय डोमेन नाम के साथ पूरा करें, और फिर भी प्रत्येक साइट को एक सामान्य ऐप तक पहुंचने की अनुमति दें जिसमें उपयोगकर्ता खातों, प्रोफाइल आदि के लिए कुछ मॉडल शामिल हैं। ।

योजना मैं जानता हूँ कि Django एक 'साइटों' है प्रत्येक साइट में एकल प्रवेश की अनुमति देने के, में एक बार उपयोगकर्ता के लॉग प्रत्येक साइट के लिए आम एप्लिकेशन के माध्यम से खाते की जानकारी साझा करने, और बनाने कुकीज़ है।

सुविधा, लेकिन मुझे यकीन नहीं है कि यह मेरी आवश्यकताओं के लिए पर्याप्त मजबूत है या नहीं।

क्या कोई ऐसा करने का तरीका सुझा सकता है या मुझे किसी भी लेख की ओर इशारा कर सकता है जो मदद कर सकता है?

अद्यतन

बस सोच रहा है, यह अपाचे के माध्यम से संभव हो जाएगा, और संभवतः urls.py करने के लिए कुछ संशोधन एक यूआरएल संरचना करने के लिए एक निश्चित डोमेन बात करने के लिए सक्षम होने के लिए?

उदाहरण के लिए, मान लें कि मुख्य साइट mainsite.com है, और मैं चाहता हूं कि अन्य डोमेन में से एक mainsite.com/secondarysite को इंगित करे, जहां माध्यमिकसाइट एक ही उदाहरण के भीतर एक django ऐप है, और अपाचे मास्क तथ्य है कि mediumsite.com डोमेन वास्तव में एक अलग स्थान पर इशारा कर रहा है?

उत्तर

6

पुन:। आपका अपडेट: आपको यूआरएल संरचना को नकली करने की आवश्यकता नहीं है, जब तक कि आप उपयोगकर्ता को mainsite.com/secondarysite जैसे यूआरएल भी सीधे उपलब्ध न हों।

मुझे लगता है कि आप name-based virtual hosting का उपयोग कर रहे हैं। एक सरल लेकिन बहुत लचीला दृष्टिकोण प्रत्येक < वर्चुअलहोस्ट > निर्देश सामान्य mod_wsgi कॉन्फ़िगरेशन निर्देशों के माध्यम से एक अलग wsgi स्क्रिप्ट का आह्वान करेगा, और फिर प्रत्येक wsgi स्क्रिप्ट os.environ['DJANGO_SETTINGS_MODULE'] को एक अलग सेटिंग्स फ़ाइल पर इंगित कर सकती है।

इनमें से प्रत्येक सेटिंग फ़ाइलों में एक अलग ROOT_URLCONF हो सकता है, इसलिए यदि आपको आवश्यकता हो तो आप अलग-अलग पथों पर विचार कॉन्फ़िगर कर सकते हैं। include तंत्र का लाभ उठाएं।

यदि आप दोनों डोमेन को सबकुछ के लिए एक ही डेटाबेस का उपयोग करना चाहते हैं, तो बस दोनों सेटिंग्स फ़ाइलों को किसी तीसरे फ़ाइल से डेटाबेस कॉन्फ़िगरेशन लोड करें, उदाहरण के लिए। settings_shared.py। या यदि आप किसी मॉडल को साझा डेटाबेस में रूट करना चाहते हैं, और अन्य नहीं, that's possible too। यह कल्पना करना कि प्रत्येक डोमेन के लिए विन्यस्त किया जा सकता है कि कैसे आसान है:

from settings_shared import DATABASES_SHARED 
DATABASES = DATABASES_SHARED.copy() 
DATABASES.update({ ... }) 

यह दृष्टिकोण प्रत्येक डोमेन के लिए यूआरएल और डेटाबेस को विन्यस्त का ख्याल रखता है। लेकिन यह एकल साइन-ऑन का ख्याल नहीं रखता है।

एसएसओ भाग के लिए, यह वास्तव में उपयोगकर्ता अनुभव आप चाहते हैं और अधिक समय आप कैसे किस तरह निर्भर करता है;)

के लिए "Django sso" खोज का प्रयास करें।संबंधित प्रश्नों का एक बहुत जैसे यहाँ हैं,: Implementing Single Sign On (SSO) using Django, How to build a secure Django single signon between different sites?, Django + Google SSO openid, Integrating Django and .Net applications using Single Sign On (SSO), (Django) Sharing authentication across two sites that are on different domains

0

मुझे लगता है कि this guy इस बारे में बात करता है।

+0

लिंक मर चुका है, अफसोस। – mrooney

+0

@mrooney इसे ठीक किया, thx –

संबंधित मुद्दे