2014-05-22 13 views
12

में मीडिया फ़ाइलों (उपयोगकर्ता अपलोड की गई फाइलें) की सेवा करता है मैंने अपने Django प्रोजेक्ट को openshift में सफलतापूर्वक तैनात किया है। लेकिन मुझे उपयोगकर्ताओं द्वारा अपलोड की गई फ़ाइलों की सेवा करने में सक्षम होना चाहिए। मैं उसके लिए MEDIA_ROOT और MEDIA_URL उपयोगकर्ता। मैंने this ट्यूटोरियल का पालन किया, लेकिन कुछ भी नहीं हुआ। मुझे MEDIA_ROOT को बदलना पड़ा क्योंकि एक सुझाव दिया गया कि मुझे सही नहीं लगता है। तो मेरी MEDIA_ROOT लग रहा हैDjango openshift

तरह
MEDIA_ROOT = os.path.join(os.environ.get('OPENSHIFT_DATA_DIR', ''),'media') 
MEDIA_URL = '/media/' 

मैं के साथ के रूप में यह लेख

RewriteEngine On 
RewriteRule ^application/media/(.+)$ /static/$1 [L]  

में कहते हैं/WSGI फ़ोल्डर में .htaccess जोड़ा गया है और के रूप में स्थिर में मीडिया के प्रतीकात्मक कड़ी बनाने के लिए निर्माण स्क्रिप्ट बनाने के लेख कहता है।

#!/bin/bash 
if [ ! -d $OPENSHIFT_DATA_DIR/media ]; then 
    mkdir $OPENSHIFT_DATA_DIR/media 
fi 

ln -sf $OPENSHIFT_DATA_DIR/media $OPENSHIFT_REPO_DIR/wsgi/static/media 

मेरी urls.py में मैं

urlpatterns += static(settings.MEDIA_ROOT, document_root=settings.MEDIA_URL) 

को शामिल किया है लेकिन मैं अभी भी उन की सेवा नहीं कर सकते। मैंने urls.py में django स्थिर विधि को शामिल न करने का भी प्रयास किया लेकिन एक ही परिणाम।

another ट्यूटोरियल में। Htacces स्थिर फ़ोल्डर के अंदर रखा गया है। क्या मुझसे कुछ गलत हो रही है?

+0

मेरी समस्या अभी तक हल करने के लिए ... हालांकि यह स्पष्ट रूप से वर्णन किया गया है कि यह काम करता सक्षम नहीं ... – Apostolos

+0

लक्ष्य क्या है? यदि आप अपाचे द्वारा मीडिया फ़ाइलों पर काम करना चाहते हैं तो आपको urlpatterns (ज्यादातर उत्पादन में) का उपयोग नहीं करना चाहिए। दूसरे मामले में आपको रीराइट्स और सिम्लिंक (ज्यादातर विकास के लिए) का उपयोग नहीं करना चाहिए। – tomako

+0

छोटा नोट। आपके यूआरएलएस पर आपके पास urlpatterns + = static (settings.MEDIA_ROOT, document_root = सेटिंग्स हैं।MEDIA_URL) लेकिन यह urlpatterns + = स्थिर (settings.MEDIA_URL, DOCUMENT_ROOT = settings.MEDIA_ROOT) तर्क उलटे क्रम –

उत्तर

8
बस दूसरों को पता है के लिए

, मैं फिर से लिखना नियम के दूसरे भाग के लिए मीडिया फ़ोल्डर जोड़ने को सही करने से मेरी समस्या हल, तो यह

RewriteEngine On 
RewriteRule ^application/media/(.+)$ /static/media/$1 [L] 

आशा है कि यह दूसरों में मदद करता है बन गया।

+0

के रूप में स्वीकार आप अपनी खुद की जवाब की जांच कर सकते में हैं होना चाहिए! –

2

समस्या आपका मीडिया यूआरएल है। सिमलिंक WSGI/स्थिर/मीडिया पर बनाई गई है, तो अपने MEDIA_URL जरूरत MEDIA_URL = '/ स्थिर/मीडिया /'

प्रथम चरण, निर्माण स्क्रिप्ट पर है .openshift/action_hooks/निर्माण:

if [ ! -d $OPENSHIFT_DATA_DIR/media ]; then mkdir $OPENSHIFT_DATA_DIR/media fi 

ln -sf $OPENSHIFT_DATA_DIR/media $OPENSHIFT_REPO_DIR/wsgi/static/media 

दूसरा कदम: अपनी सेटिंग्स में:

MEDIA_URL = '/static/media/' 

if ON_PAAS: 
    MEDIA_ROOT = os.path.join(os.environ.get('OPENSHIFT_DATA_DIR'), 'media') 
else: 
    MEDIA_ROOT = os.path.join(BASE_DIR, 'media') 
1

मैं एक ही समस्या मिला है लेकिन अपोस्तोलोस 'समाधान ऊपर मुद्दा हल नहीं किया गया है: जब मैं http://<domain>/media/<file> यह अभी भी काम नहीं करता है तक पहुँचने का प्रयास।

हालांकि यह किसी अन्य तरीके से काम करता है। अगर मैं उसी फ़ाइल तक पहुंचने का प्रयास करता हूं जैसे कि यह http://<domain>/static/media/<file> का उपयोग कर स्थिर था तो यह काम करता है। यह Gpzim98 के कामकाज को नियोजित किए बिना भी होता है। मुझे लगता है कि कारण यह है कि मीडिया फाइलें अब प्रतीकात्मक लिंक के माध्यम से सुलभ हैं। दूसरे शब्दों में मीडिया फ़ाइलों को सेवा नहीं मिलती है, लेकिन अब आप दिखा सकते हैं कि वे स्थैतिक फाइलें हैं।

यह समझने के लिए बहुत उत्सुक होगा कि क्या हो रहा है और इस समस्या को पूरी तरह से कैसे हल किया जाए (यदि यह किया जा सकता है) और मीडिया फ़ाइलों को सीधे MEDIA_URL के माध्यम से सेवा करने में सक्षम हो।

धन्यवाद

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