मैं Google क्लाउड स्टोरेज में अपनी Django स्थिर/मीडिया फ़ाइलों की सेवा के साथ अभी भी नया हूं। यह अब काम कर रहा है लेकिन मुझे यकीन नहीं है कि यह सही है या यह पहले से ही पर्याप्त है, क्या मुझे अभी भी सीडीएन जैसे क्लाउडफ्रंट या अन्य समान सेवाओं का उपयोग करने की आवश्यकता है? मैं वास्तव में उलझन में हूं और किसी भी सिफारिश की बहुत सराहना की जाएगी।

नीचे मेरी कॉन्फ़िगरेशन है।

import os
from google.oauth2 import service_account

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

GS_CREDENTIALS = service_account.Credentials.from_service_account_file(
os.path.join(BASE_DIR, 'extras/google-storage.json')
)

STATICFILES_STORAGE = 'extras.storage_backends.GoogleCloudStaticFileStorage'
DEFAULT_FILE_STORAGE = 'extras.storage_backends.GoogleCloudMediaFileStorage'

GS_PROJECT_ID = 'project_id'
GS_STATIC_BUCKET_NAME = 'static_bucket'
GS_MEDIA_BUCKET_NAME = 'media_bucket'


STATIC_URL = 'https://storage.googleapis.com/{}/'.format(GS_STATIC_BUCKET_NAME)
MEDIA_URL = 'https://storage.googleapis.com/{}/'.format(GS_MEDIA_BUCKET_NAME)
GS_DEFAULT_ACL = 'publicRead'

मैं निम्नलिखित का उपयोग कर रहा हूँ:

Django 2.2

पायथन 3.7

आपका बहुत बहुत धन्यवाद!

0
aldesabido 14 सितंबर 2020, 03:37

2 जवाब

सबसे बढ़िया उत्तर

क्लाउड स्टोरेज के साथ अपने Django मीडिया का उपयोग करने के लिए आपको CDN या CloudFront जैसी किसी और सेवा की आवश्यकता नहीं होगी। जैसा कि आधिकारिक Django संग्रहण दस्तावेज़ में स्पष्ट किया गया है - सुलभ यहां - कुछ पैरामीटर हैं जिन्हें आपको उत्पादों को एकीकृत करने के लिए कॉन्फ़िगर करने की आवश्यकता है और इसमें नेटवर्क सेवाएं शामिल नहीं हैं।

दोनों को कैसे एकीकृत करें और इस प्रकार की सेवा की अनुशंसा नहीं की जाती है, इसका एक और उदाहरण इस लेख में है यहां। तो, संक्षेप में, चिंता न करें, आपको अपनी Django फ़ाइलों को क्लाउड स्टोरेज पर चलाना जारी रखने के लिए इस प्रकार की नेटवर्क सेवा की आवश्यकता नहीं होगी।

1
gso_gabriel 14 सितंबर 2020, 10:05

मेरे पास एक ही सटीक प्रश्न था, और मैंने इसे तब तक चिह्नित किया था जब तक कि मैंने सब कुछ हल नहीं कर लिया। यह पूरी व्याख्या है, उम्मीद है कि यह मदद करता है और Google के लोग इसे उपयोगी पाते हैं:

यह मेरी सेटिंग फ़ाइल का वह भाग है जहां मैं Google बकेट का उपयोग करता हूं

## GETTING THE CREDENTIALS OF THE ACCOUNT ##

from google.oauth2 import service_account
GS_CREDENTIALS = service_account.Credentials.from_service_account_file(os.path.join(BASE_DIR,"credentials.json"))  

## STATIC FILES ##  

STATICFILES_FINDERS = ('django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder', )   

STATICFILES_DIRS =[os.environ['STATIC_URL'],] 
STATIC_ROOT = '/static/' 
STATIC_URL = os.environ['STATIC_URL'] 
 

#GS_STATIC_BUCKET_NAME = os.environ["GS_STATIC_BUCKET_NAME"] 
#STATICFILES_STORAGE = "website.custom.GoogleCloudStaticStorage"  

## MEDIA FILES ##  
GS_BUCKET_NAME = os.environ['GS_MEDIA_BUCKET_NAME'] 
GS_PROJECT_ID = os.environ['GS_PROJECT_ID'] 
GS_DEFAULT_ACL = 'publicRead'      
GS_FILE_CHARSET = True #This changes the names of the files
GS_FILE_OVERWRITE = False #no overwritting, is important, you don't know if your users have file 1.png and mess up your page
DEFAULT_FILE_STORAGE = 'storages.backends.gcloud.GoogleCloudStorage'   
MEDIA_ROOT = 'media' 
MEDIA_URL = os.environ['MEDIA_URL'] 

मैं फ़ाइल भंडारण के लिए एक कस्टम वर्ग का उपयोग करूंगा क्योंकि आईडीके आपके कौशल क्या हैं, लेकिन मेरे लिए, कोई ओवरराइटिंग जरूरी नहीं है, और यदि पैकेज पहले से ही ऐसा करता है तो इसे कोड क्यों करें। शायद स्थिर फ़ाइलों के लिए एक कस्टम अपलोड क्योंकि वे बहुत कुछ फिर से लिखे जाते हैं, इसलिए हो सकता है कि आप कुछ ऐसा छोड़ सकें।

Im वर्तमान में अपलोड की गई छवियों का आकार बदलने के लिए संकेतों पर काम कर रहा है, जो कि एक महान विशेषता है, क्योंकि प्रति प्रोजेक्ट 5gigs मुक्त स्थान है।

आशा है कि यह आपकी मदद करता है। आपका दिन अच्छा रहे।

0
jacobitosuperstar 15 सितंबर 2020, 06:24