मैंने थोड़ी देर पहले कमांड लाइन से चलाने के लिए एक-ऑफ पायथन स्क्रिप्ट लिखने के लिए setup_environ()
का उपयोग किया जो वास्तव में कस्टम manage.py कमांड (मेरी पसंदीदा पसंद) के रूप में बिल्कुल ठीक नहीं था। यह सब कुछ अच्छी तरह से स्थापित किया। मुझे लगता है कि हमने इस समारोह को हटा दिया क्योंकि गैर-डीजेंगो पायथनिस्ट इस तरह की जादुई चीजों के लिए djangonauts का मजाक उड़ाते हैं और हम गंदे महसूस करने से थक गए हैं। तो अगर इसे बहिष्कृत किया गया, तो विकल्प क्या है? शायद यह एक आलसी सवाल है, लेकिन मुझे एक ही प्रभाव को प्राप्त करने के लिए setup_environ के स्थान पर चलाने की क्या ज़रूरत है? मुझे लगता है कि मैं फ़ंक्शन को मेरी स्क्रिप्ट में कॉपी/पेस्ट कर सकता हूं लेकिन मुझे लगता है कि इसे बहिष्कृत करने का मुद्दा नहीं था। (जाहिर है, मैं अभी भी एक बहिष्कृत फ़ंक्शन का उपयोग कर सकता हूं, लेकिन मैं चाहता हूं कि मेरी स्क्रिप्ट django के कुछ संस्करणों से बचें)एक-ऑफ django स्क्रिप्ट के लिए बहिष्कृत setup_environ() के लिए वैकल्पिक?
उत्तर
इस में Django 1.7
import os
import django
from myapp import models
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.settings")
django.setup()
print models.MyModel.objects.get(pk=1)
Django 1.4 रिलीज नोट्स आधिकारिक तौर पर सेटिंग सेट करने के लिए django.conf.settings.configure()
का उपयोग करने की अनुशंसा करते हैं। यह छोटी लिपियों के लिए अच्छा है जिसके लिए आपको "पायथनिक" तरीके से सब कुछ करने की ज़रूरत है। यदि आपके पास एक बड़ी परियोजना है, तो मैं Django दृष्टिकोण का उपयोग करना चाहता हूं जिसमें एक अलग सेटिंग्स मॉड्यूल/पैकेज है और उसके बाद DJANGO_SETTINGS_MODULE
पर्यावरण चर में इसका पथ है। यह दृष्टिकोण जो manage.py
में इस्तेमाल किया जाता है:
# manage.py
# ...
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "fooproject.settings")
# ...
रिलीज डॉक्स here पाया जा सकता है।
Django 1.6 का उपयोग करके, 'manage.py' में अब सुझाई गई रेखा है:' os.en वातावरण.setdefault ("DJANGO_SETTINGS_MODULE", "myproject.settings") 'और फिर भी जब मैं एक खोल लॉन्च करने का प्रयास करता हूं तो यह अभी भी फेंकता है मूल प्रश्न के समान त्रुटि। –
miki725 के जवाब पर विस्तार करने के लिए, अगर इससे पहले कि आप
from django.core.management import setup_environ
import fooproject.settings as settings
setup_environ(settings)
सिर्फ
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "fooproject.settings")
from django.conf import settings
के साथ बदलें और अपनी सेटिंग्स सेटिंग्स के रूप में लोड होगा था।
Django 1.7+ के लिए, बेन डेविस से समाधान देखें।
यह django 1.6 के साथ मेरे लिए काम नहीं करता है - मैंने sys.path को प्रोजेक्ट पथ (ऐप नहीं) जोड़ा है, मैंने django.conf से सेटिंग्स आयात किए हैं, फिर django.conf से सेटिंग्स को जोड़ा है, लेकिन यदि मैं कोशिश करता हूं और फिर कोशिश करता हूं, मेरे डेटाबेस मॉडल में से एक आयात करें (shoppinglist.models से शॉपिंगलिस्ट आयात करें) यह एक त्रुटि देता है "मॉडल नामित मॉड्यूल नहीं"। वही आयात लाइन manage.py के माध्यम से लॉन्च किए गए खोल के भीतर से काम करती है। कोई विचार? – frankster
यदि आप मॉडल आयात नहीं कर सकते हैं, तो ऐसा लगता है जैसे आपके पथ मान सही तरीके से सेट नहीं किए गए हैं, जो सेटिंग्स के संबंध में इस प्रश्न के दायरे से बाहर है। आपको अपने पथ डीबग करने के लिए "manage.py shell" के साथ लॉन्च किए गए django खोल के बजाय "पायथन" के साथ लॉन्च किए गए नियमित पायथन खोल में परीक्षण करने का प्रयास करना चाहिए। –
Disclaimer: I'm using Django 1.8
बस मेरे 2 सेंट जोड़ने बदल गया है: मैं इस पेज में प्रस्तुत समाधान के कुछ करने की कोशिश की है, लेकिन वे सब पर काम किया नहीं समझे। मैं बस एक समाधान के साथ आया कि मैं नीचे साझा कर रहा हूँ।
सुनिश्चित करें कि आप अपनी परियोजना के रूट फ़ोल्डर में हैं। वही जहां manage.py
स्थित है।
#make sure basic imports are in place
>>> import os,django
#set the specific django settings file
>>> os.environ.setdefault("DJANGO_SETTINGS_MODULE", "main.settings.base")
# import your modules and use them just like you do in your
# web apps
>>> from apps.customers import models as c
# normal usage... for instance:
>>> dir(c)
['You', 'Will', 'See', 'Your', 'Models', ... ]
यदि मैं रूट में नहीं हूं तो मुझे क्या करना चाहिए? – Alexis
क्या Leandro एन कहा करने के लिए जोड़ने के लिए (, धन्यवाद Leandro!), आप django.setup जोड़ने के लिए (है)।
उदाहरण के लिए, मेरी कोड:
import os, django
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings')
django.setup()
from app.models import ModelA, ModelB
FYI करें, मैं Django 1.10 पर हूँ।
- 1. बहिष्कृत -XDatatypeContext के लिए वैकल्पिक?
- 2. एंड्रॉइड: बहिष्कृत संदर्भ के लिए वैकल्पिक। MODE_WORLD_READABLE?
- 3. बहिष्कृत PHP फ़ंक्शन के लिए वैकल्पिक: eregi_replace
- 4. बहिष्कृत करने के लिए वैकल्पिक javax.servlet.http.HttpUtils.parseQueryString?
- 5. gethostbyname के लिए वैकल्पिक
- 6. प्रमाणीकरण के लिए क्लाइंटलॉगिन के लिए वैकल्पिक
- 7. django प्रपत्र प्रसंस्करण बॉयलरप्लेट के लिए वैकल्पिक?
- 8. बहिष्कृत करने के लिए वैकल्पिक sqlite pragma "default_cache_size"
- 9. java.util.Date के setHours() के लिए वैकल्पिक विधि?
- 10. JFileChooser के लिए वैकल्पिक
- 11. HttpListener के लिए वैकल्पिक?
- 12. GLUTesselator के लिए वैकल्पिक?
- 13. ड्रीमवेवर के लिए वैकल्पिक?
- 14. texelFetch के लिए वैकल्पिक?
- 15. file_get_contents के लिए वैकल्पिक?
- 16. कुकीज़ के लिए वैकल्पिक
- 17. वेबसाकेट्स के लिए वैकल्पिक
- 18. बर्कलेडीबी के लिए वैकल्पिक?
- 19. रिकैप्चा के लिए वैकल्पिक
- 20. FolderBrowserDialog के लिए वैकल्पिक
- 21. फिडलर के लिए वैकल्पिक?
- 22. फोगबगज़ के लिए वैकल्पिक?
- 23. सीएसवी के लिए वैकल्पिक?
- 24. TXMLDocument के लिए वैकल्पिक?
- 25. जावा के लिए सेवा के लिए वैकल्पिक?
- 26. क्रिप्ट करने के लिए वैकल्पिक()
- 27. Esper Esper वैकल्पिक के लिए वैकल्पिक?
- 28. एंड्रॉइड में AbsoluteLayout के लिए वैकल्पिक?
- 29. सी के लिए वैकल्पिक, सी ++?
- 30. प्रतिक्रिया के लिए वैकल्पिक। एंड()?
यह मेरे लिए 1.7.3 django.setup() विशेषताएँ त्रुटि: 'मॉड्यूल' ऑब्जेक्ट में कोई विशेषता नहीं है 'सेटअप' – Harry
यह सुनिश्चित करने के लिए दो बार जांचें कि आप चीजों को सही तरीके से आयात कर रहे हैं (और सुनिश्चित करें कि आपका पथ सही है) । सेटअप फ़ंक्शन 1.7.3 में होना चाहिए: https://github.com/django/django/blob/1.7.3/django/__init__.py –
django.setup() 1.8 django संस्करण में जोड़ा गया था। यह 1.7 में काम नहीं करेगा। https://docs.djangoproject.com/en/1.8/topics/settings/ – javed