2013-02-10 9 views
6

Ive ने Django के भीतर स्थिर फ़ाइल ऐप का उपयोग करके स्थिर सामग्री की सेवा करने में असमर्थ होने पर कुछ अन्य धागे पर जांच की है, लेकिन अभी तक समाधान ढूंढना बाकी है।डीजेगो स्टेटिक फाइलों का परिणाम 404

settings.py

STATIC_ROOT = '/opt/django/webtools/static/' 
STATIC_URL = '/static/' 
STATICFILES_DIRS = (
    "/home/html/static", 
) 
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder', 
    'django.contrib.staticfiles.finders.AppDirectoriesFinder', 
# 'django.contrib.staticfiles.finders.DefaultStorageFinder', 
) 

खाका

प्रासंगिक लाइन ....

<img src="{{ STATIC_URL }}macmonster/img/macmonster-logo-blue.png" > 

लॉग्स

लॉग ऐसा लगता है कि पथ सही है, लेकिन यह अफसोस अभी भी 404 में जिसके परिणामस्वरूप है से ..

[10/Feb/2013 16:19:50] "GET /static/macmonster/img/macmonster-logo-blue.png HTTP/1.1" 404 1817 
[10/Feb/2013 16:19:51] "GET /static/macmonster/img/macmonster-logo-blue.png HTTP/1.1" 404 1817 
+0

staticfiles_dirs पथ आपकी फ़ाइलों के पूर्ण पथ पथ है? –

+0

यह सिर्फ एक डमी फ़ोल्डर है क्योंकि मैं अभी तक स्थिर सामग्री आयात नहीं करना चाहता हूं। स्थैतिक जड़ स्थिर सामग्री का पूरा मार्ग है। – felix001

+0

'STATIC_ROOT' सेटिंग आपके ऐप्स से स्थिर फ़ाइलों को इकट्ठा करने के लिए है, 'STATIC_URL' केवल उपसर्ग है लेकिन' STATICFILES_DIRS' वह जगह है जहां Django फ़ाइलों को तब तक ढूंढता है जब तक कि आप' स्थिर स्टेटस 'कमांड चलाते हैं, अगर स्मृति मुझे सही सेवा देती है , इसलिए आपको स्थानीय विकास के लिए यह सुनिश्चित करना होगा कि यह सेटिंग एक पूर्ण और वैध फ़ोल्डर –

उत्तर

11

स्थिर फ़ाइलों की स्थानीय प्रस्तुति के लिए, आप नहीं इकट्ठा करने के किसी भी रूप की स्थापना की है, तो StaticFiles की और यदि आप Django 1.3+ चला रहे हैं, मेरा मानना ​​है कि इस तरह से अपने settings.py है जब स्टैटिक फ़ाइलें

# Absolute path to the directory static files should be collected to. 
# Don't put anything in this directory yourself; store your static files 
# in apps' "static/" subdirectories and in STATICFILES_DIRS. 
# Example: "/home/media/media.lawrence.com/static/" 
STATIC_ROOT = '' 

# URL prefix for static files. 
# Example: "http://media.lawrence.com/static/" 
STATIC_URL = '/static/' 

# Additional locations of static files 
STATICFILES_DIRS = (
    # Put strings here, like "/home/html/static" or "C:/www/django/static". 
    # Always use forward slashes, even on Windows. 
    # Don't forget to use absolute paths, not relative paths. 
'/Users/cupcake/Documents/Workspaces/myDjangoProject/someOtherFolderPerhapsIfYouWant/static', 
) 

# List of finder classes that know how to find static files in 
# various locations. 
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder', 
    'django.contrib.staticfiles.finders.AppDirectoriesFinder', 
# 'django.contrib.staticfiles.finders.DefaultStorageFinder', 
) 

सूचना है कि मैं STATIC_ROOT बाहर छोड़ दिया है यहाँ की बात कर की तरह दिखना चाहिए। ऐसा इसलिए है क्योंकि मुझे स्थिर फाइल संग्रह "अभी तक" की आवश्यकता नहीं है।

स्थैतिक फ़ाइलों का संग्रह कई अलग-अलग staticfiles फ़ोल्डर्स की सेवा के साथ समस्याओं को हल करना (वर्तनी) करना है, इसलिए उन्होंने staticfiles ऐप को विलय कर दिया जो सामान्य रूप से इस समस्या के साथ मदद के लिए उपयोग किया जाता था। यह क्या करता है, और यह दस्तावेज़ों में वर्णित है, अपने सभी ऐप्स से सभी स्थिर फ़ाइलों को लेना और उन्हें अपने ऐप को उत्पादन में डालते समय आसान सेवा के लिए एक (1) फ़ोल्डर में रखना है।

तो आप समस्या है कि आपने इस चरण को "चूक" दिया है और यही कारण है कि आप उन्हें एक्सेस करने का प्रयास करते समय 404 प्राप्त कर रहे हैं। इसलिए आपको अपनी स्थिर फ़ाइलों यानी के लिए एक पूर्ण पथ का उपयोग करने की आवश्यकता है।

'/Users/cupcake/Documents/Workspaces/myDjangoProject/someOtherFolderPerhapsIfYouWant/static', 

इसके अलावा, आप को आसान बनाने में कर सकता है और "ठीक" ऐसे ही एक हार्डकोडेड पथ जो मैं चित्रण के लिए इस्तेमाल किया और इस

कैसा लगा होने की आवश्यकता: पर एक मैक या यूनिक्स प्रणाली यह कुछ इस तरह देखना चाहिए
PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__)) 

STATICFILES_DIRS = (
    PROJECT_ROOT + '/static/' 
) 

यह पोर्टेबिलिटी समस्या को भी ठीक करेगा। इसके बारे में एक अच्छी स्टैक ओवरफ्लो पोस्ट here

मुझे आशा है कि मैंने इसे थोड़ा स्पष्ट कर दिया है, अन्यथा कृपया मुझे सही करें अगर मैं गलत हूं^_ ^!

संग्रह और कैसे Django के नए संस्करण में स्थिर फाइलों का प्रबंधन करने के लिए इस लिंक The staticfiles app

+0

शानदार ढंग से समझाया गया, और अब सबकुछ अपेक्षित के रूप में काम कर रहा है। बहुत से धन्यवाद .... – felix001

+1

यदि आप अपने कोड की पोर्टेबिलिटी चाहते हैं तो फ़ोल्डर्स कॉन्सटेनेशन के लिए + का उपयोग न करें, os.path.join() का उपयोग करें –

3

बदलें

STATIC_URL = '/static/' 

सेट

STATIC_URL = 'http://yourdomain.com/static/' 

यह अविश्वसनीय है पढ़ा लेकिन, 1 घंटे के बाद के लिए इसे खोजना समाधान स्थिर फ़ाइलों के साथ मेरी समस्या का समाधान करता है औरसे STATIC_ROOT हटा देता है 210। STATICFILES_DIRS सिर्फ मॉड्यूल में सभी स्थिर एकत्रित करने और इसे STATIC_ROOT में संग्रहीत करने के लिए है।

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