2010-11-04 12 views
31

मेजबान सर्वर के लिए नाम पाने के लिए Django का उपयोग कैसे करें?मेजबान सर्वर के लिए नाम पाने के लिए Django का उपयोग कैसे करें?

मुझे ग्राहक नाम के बजाय होस्टिंग सर्वर का नाम चाहिए?

+0

मुझे विश्वास नहीं है कि यह प्रक्रिया डीजे में इतनी गड़बड़ है। – zallarak

उत्तर

53

मैं आम तौर पर settings.py में कुछ इस तरह रखा), यदि कोई हो तो रिवर्स प्रॉक्सी हेडर खाते में लेना। अगर आपके पास कोई अनुरोध नहीं है, तो आपको अपनी सेटिंग्स में होस्टनाम को कहीं भी कॉन्फ़िगर करना चाहिए। बस सिस्टम होस्टनाम को देखकर कई मामलों में संदिग्ध हो सकता है, आभासी मेजबान सबसे आम हैं।

+7

यदि आप डॉकर का उपयोग करते हैं, तो आपका समाधान काम नहीं करता है। यह यूआरएल के बजाय कंटेनर आईडी दिखाएगा। –

+134

डॉकर मौजूद होने से पहले मेरा समाधान लिखा गया था। माफ़ कीजिये। –

+2

सही समाधान 'request.get_host()' – Dorian

4

क्या आपने os.environ.get('HOSTNAME') को आजमाया था?

import socket 

try: 
    HOSTNAME = socket.gethostname() 
except: 
    HOSTNAME = 'localhost' 
57

आप एक अनुरोध है, तो (उदाहरण के लिए, इस के लिए एक दृश्य के अंदर है), तो आप request.get_host() देख सकते हैं जो आप एक पूरा LOCNAME हो जाता है (मेजबान और पोर्ट:

3

बस @Tobu's answer पर जोड़ें। आप एक अनुरोध वस्तु है, और आप प्रोटोकॉल (अर्थात HTTP/HTTPS) जानना चाहते हैं, तो आप कर सकते हैं:

if request.is_secure(): 
    protocol = 'https' 
else: 
    protocol = 'http' 

क्योंकि is_secure() रिटर्न True यदि अनुरोध HTTPS के साथ बनाया गया था।

+6

प्रतीत होता है कि आप बस [request.scheme] का उपयोग नहीं कर सकते (https://docs.djangoproject.com/en/dev/ref/request-response/#django.http .HttpRequest.scheme)? –

+2

@RyneEverett धन्यवाद। इसके बारे में नहीं पता था (चेहरे)। – azalea

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