2013-11-09 9 views
202

मैं django-1.6 के लिए नया हूँ। जब मैं DEBUG = True के साथ django सर्वर चलाता हूं, तो यह पूरी तरह से चल रहा है। लेकिन जब मैं सेटिंग्स फ़ाइल में False करने के लिए DEBUG बदलने के लिए, तो सर्वर बंद कर दिया और यह कमांड प्रॉम्प्ट पर निम्न त्रुटि देता है:Django खराब अनुरोध (400) देता है जब DEBUG = गलत

CommandError: You must set settings.ALLOWED_HOSTS if DEBUG is False. 

बाद मैं ["http://127.0.0.1:8000",] करने के लिए ALLOWED_HOSTS बदल गया है, ब्राउज़र में मैं त्रुटि मिलती है:

Bad Request (400) 

डीजगो मोड के बिना Django चलाने के लिए संभव है?

+0

याद रखने की एक बात: 'ALLOWED_HOSTS' – shellbye

उत्तर

350

ALLOWED_HOSTS list पूरी तरह से योग्य मेजबान के नाम, नहीं URL होने चाहिए। बंदरगाह और प्रोटोकॉल छोड़ दें। आप 127.0.0.1 उपयोग कर रहे हैं, मैं भी सूची में localhost जोड़ना होगा:

ALLOWED_HOSTS = ['127.0.0.1', 'localhost'] 

तुम भी * इस्तेमाल कर सकते हैं मिलान करने के लिए किसी भी मेजबान:

ALLOWED_HOSTS = ['*'] 

प्रलेखन का हवाला देते हुए:

Values in this list can be fully qualified names (e.g. 'www.example.com'), in which case they will be matched against the request’s Host header exactly (case-insensitive, not including port). A value beginning with a period can be used as a subdomain wildcard: '.example.com' will match example.com , www.example.com , and any other subdomain of example.com . A value of '*' will match anything; in this case you are responsible to provide your own validation of the Host header (perhaps in a middleware; if so this middleware must be listed first in MIDDLEWARE_CLASSES).

बोल्ड जोर मेरा पर जोर देता है।

आपको प्राप्त होने वाली स्थिति 400 प्रतिक्रिया SuspiciousOperation exception के कारण होती है जब आपका होस्ट हेडर उस सूची में किसी भी मान से मेल नहीं खाता है।

+2

में' http 'या' https 'को शामिल न करें धन्यवाद यह काम करता है, लेकिन जब मैं गलत सेट करता हूं, तो एक समस्या आती है, क्योंकि सभी स्थिर फ़ाइलों को 404 के रूप में दिखाया जाता है। मैं नहीं कर सका समझें कि यह – MegaBytes

+0

@MegaBytes क्यों नहीं मिला: क्षमा करें, मुझे नहीं पता कि यह क्या हो सकता है। –

+1

क्या आप मुझे सुझाव दे सकते हैं कि यह कैसे करें, क्योंकि मेरी परियोजना उत्पादन पर जा रही है। – MegaBytes

2

मैं एक ही समस्या थी और मैं ALLOWED_HOSTS = ['*'] स्थापित करने और स्थिर चित्र आप इस तरह पर्यावरण विन्यास में आभासी पथ बदलना होगा साथ समस्या को हल करने से यह तय हो:

वर्चुअल पथ                                 निर्देशिका

/स्थिर/                                                   /opt/अजगर/वर्तमान/ऐप्स/yourpj/स्थिर/
/मीडिया/                                           /opt/अजगर/वर्तमान/ऐप्स/न्यूवो/मीडिया/

मुझे आशा है कि यह आप में मदद करता है।

पीडी: मेरी खराब अंग्रेजी के लिए खेद है।

-1
नेविगेट सेटिंग्स को

और base.py फ़ाइल को ALLOWED_HOSTS = [ '*']

+1

स्वीकृत उत्तर दोहराना न करें। स्वच्छ फोरम रखने के लिए इसे हटाएं – WoodChopper

+0

इस तरह उत्तर न दें, इसे टिप्पणी करें –

2

मेरे लिए अनुमति मेजबान सेट का पता लगाने, मैं सेट न सही पर USE_X_FORWARDED_HOST द्वारा यह त्रुटि हुई। डॉक्स से:

This should only be enabled if a proxy which sets this header is in use.

मेरे होस्टिंग सेवा wrote स्पष्ट रूप से उनके दस्तावेज में है कि इस की स्थापना इस्तेमाल किया जाना चाहिए, और मैं इस 400 त्रुटि मिलती है अगर मैं इसे भूल जाते हैं।

+0

क्या यह आवश्यक है यदि ALLOWED_HOSTS = ['*']? –

+1

मुझे लगता है कि ALLOWED_HOSTS पूरे होस्ट को अवरुद्ध करता है। USE_X_FORWARDED_HOST केवल यह निर्धारित करता है कि HTTP शीर्षलेख का उपयोग किया जाता है या नहीं। – Keith

1

आपको सेटिंग्स फ़ाइल में DEBUG = False के साथ, आपको भी ALLOWED_HOST सूची सेट अप की आवश्यकता है। ALLOWED_HOST = ['127.0.0.1', 'localhost', 'www.yourdomain.com']

सहित अन्य प्रयासों को अन्यथा आप django से एक खराब अनुरोध (400) त्रुटि प्राप्त कर सकते हैं।

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