2012-06-13 21 views
21

में डायनामिक सबडोमेन हैंडलिंग मैं वेब एप्लिकेशन बनाने के लिए फ्लास्क का उपयोग करने जा रहा हूं, और एप्लिकेशन के हिस्से में सबडोमेन शामिल होगा (उदाहरण के लिए, user1.appname.org)।वेब ऐप (फ्लास्क)

मुझे यकीन नहीं है कि इन सबडोमेन को फ्लास्क कॉन्फ़िगरेशन में गतिशील रूप से बनाने के लिए कैसे जाना है, या उन्हें उत्पादन सर्वर पर कैसे तैनात करना है।

ऐसा करने का सबसे अच्छा तरीका क्या है?

उत्तर

34

सभी फ्लास्क की रूटिंग subdomain कीवर्ड तर्क का समर्थन करती है (इसमें रूट चर के लिए समर्थन शामिल है)।

@app.route("/", subdomain="static") 
def static_index(): 
    """Flask supports static subdomains 
    This is available at static.your-domain.tld""" 
    return "static.your-domain.tld" 

@app.route("/dynamic", subdomain="<username>") 
def username_index(username): 
    """Dynamic subdomains are also supported 
    Try going to user1.your-domain.tld/dynamic""" 
    return username + ".your-domain.tld" 
+1

इस काम बोतल परीक्षण स्थानीय होस्ट सर्वर पर चल रहा होगा? –

+1

मैं यह भी सोच रहा हूं कि स्थानीय रूप से इसका परीक्षण करने का कोई तरीका है या नहीं। मैंने अपनी मेजबान फ़ाइल में serveral प्रविष्टियों को जोड़ने का प्रयास किया है, यह काम नहीं कर रहा है। –

+0

@sean आप कस्टम डोमेन के लिए कुछ कैसे करते हैं। उपयोगकर्ता subdomain.example.com के साथ साइन अप करता है और फिर www.mygreatsite.com जैसे कस्टम डोमेन जोड़ता है? मैं फ्लास्क रूट में इस कस्टम डोमेन तक पहुंच कैसे प्रबंधित करूं? – Raj

38

शॉन वीरा के पोस्ट के पूरक के लिए, आपको SERVER_NAME कॉन्फ़िगरेशन चर सेट करने की भी आवश्यकता है।

http://flask.pocoo.org/docs/config/

सर्वर का नाम और पोर्ट संख्या से प्रलेखन। सबडोमेन समर्थन (उदा .: 'myapp.dev 432000) के लिए आवश्यक है नोट करें कि लोकहोस्ट सबडोमेन का समर्थन नहीं करता है, इसलिए इसे "लोकलहोस्ट" में सेट करने में सहायता नहीं होती है। SERVER_NAME को डिफ़ॉल्ट रूप से सेट करना URL12 पीढ़ी को संदर्भ के बिना सक्षम करता है लेकिन एप्लिकेशन संदर्भ के साथ।

स्थानीय रूप से परीक्षण करने के लिए आप अपने hosts फाइल करने के लिए प्रविष्टियों जोड़ने की जरूरत है इस तरह:

127.0.0.1  cvshark.local 
127.0.0.1  robert.cvshark.local 
127.0.0.1  www.cvshark.local 
+0

मुझे वे उदाहरण नहीं समझते हैं: 'myapp.dev:52000'। क्या myapp सबडोमेन है और मेजबाननाम dev? – compie

+0

@compie हां, यह सही है। –

+1

यह बेहतर जवाब है; यह प्रलेखन से परे चला जाता है और चालक सामान हल करता है। – gwg