2016-01-26 3 views
10

वर्तमान में मैं एक django ऐप पर काम कर रहा हूं जो Google ऐप इंजन के शीर्ष पर चलता है। मॉडल का एक क्षेत्र में से एक लगता है कि,django की छवि फ़ील्ड का समर्थन करने के लिए Google ऐप इंजन कैसे बनाएं?

picture = models.ImageField() 

लेकिन यह जबकि उस विशेष मॉडल

File "/django_projects/cityguide-backend/src/lib/django/db/models/fields/files.py", line 93, in save 
    self.name = self.storage.save(name, content, max_length=self.field.max_length) 
    File "/django_projects/cityguide-backend/src/lib/django/core/files/storage.py", line 63, in save 
    name = self._save(name, content) 
    File "/django_projects/cityguide-backend/src/lib/django/core/files/storage.py", line 248, in _save 
    fd = os.open(full_path, flags, 0o666) 
    File "/google_appengine/google/appengine/tools/devappserver2/python/stubs.py", line 73, in fake_open 
    raise OSError(errno.EROFS, 'Read-only file system', filename) 
OSError: [Errno 30] Read-only file system: u'/django_projects/backend/src/Screenshot_from_2014-04-18_190527.png' 

बचत कुछ शोध मुझे लगता है कि, GAE won't support writing operations to file system पाया करने के बाद नीचे त्रुटि दिखाता है। मुझे लगता है कि मुझे GAE के blobstore या Google क्लाउड स्टोरेज का उपयोग करने की आवश्यकता है। लेकिन मुझे नहीं पता कि डीजेंगो के मॉडल के साथ इन्हें कैसे एकीकृत किया जाए।

उत्तर

4

विशिष्ट होने के लिए, Django डिफ़ॉल्ट रूप से ऐप इंजन के क्लाउड स्टोरेज या डेटास्टोर का समर्थन नहीं करता है और कस्टम स्टोरेज प्रदाताओं को उनके साथ काम करने की आवश्यकता होती है। ये वे समाधान हैं जो आधिकारिक Google दस्तावेज़ों द्वारा कवर किए गए हैं:

  • Django non-rel जो ऐप इंजन डेटास्टोर का समर्थन करता है। क्लाउड प्लेटफ़ॉर्म दस्तावेज़ में संबंधित article भी देखें।
  • यदि आप क्लाउड एसक्यूएल या बाहरी MySQL डेटाबेस को बैक-एंड के रूप में उपयोग करना पसंद करते हैं, तो आप this guide के अनुसार django.db.backends.mysql मॉड्यूल का उपयोग कर सकते हैं।

    • Djangae है, जो एक नए App इंजन डेटास्टोर की ओर विशेष रूप से तैयार परियोजना है:

    भी निम्न अनौपचारिक परियोजनाओं रहे हैं।

  • 'django-appengine-toolkit' क्लाउड स्टोरेज का समर्थन करता है।

आप उपयोग कर क्लाउड संग्रहण आप एक संदर्भ के रूप Django-appengine-टूलकिट से storage.py पर एक नज़र ले जा सकते हैं अपने खुद के भंडारण प्रदाता लागू करना चाहते हैं।

+0

मैं किसी भी बाहरी सामान का उपयोग नहीं करना चाहता .. –

+0

मैंने अपना जवाब अपडेट किया। यदि आप किसी बाहरी समाधान का उपयोग नहीं करना चाहते हैं तो आपको Django के लिए अपना स्वयं का स्टोरेज प्रदाता लिखना होगा। आप अभी भी इनमें से किसी भी परियोजना से संदर्भ के रूप में स्रोत का उपयोग कर सकते हैं। – Adam

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