2012-04-15 18 views
12

मुझे लगता है कि मेरी स्थिर फाइलें मेरे टेम्पलेट्स से लोड नहीं हो रही हैं। मैंने आधिकारिक दस्तावेज का पालन किया है लेकिन मुझे कुछ याद आना चाहिए।Django स्थिर फाइलों की सेवा नहीं कर रहा है, 404 त्रुटियां प्राप्त कर रहा है

मेरे निर्देशिका लेआउट (Django द्वारा उत्पन्न, सबसे फाइलों छोड़े गए):

myproject 
    myproject 
    settings.py 
    urls.py 
    static 
    css 
     bootstrap.css 
     main.css 
    templates 
    base.html 
    myapp1 
    myapp2 
    ... 
    manage.py 

मेरे settings.py:

STATIC_URL = 'static/' 

मैं बहुत की तरह (मेरे टेम्पलेट से) मेरी शैली को संदर्भित कर रहा हूँ:

{% load staticfiles %} 
<link rel="stylesheet" href="{% static "css/bootstrap.css" %}" type="text/css"> 
<link rel="stylesheet" href="{% static "css/style.css" %}" type="text/css"> 

जो इसे एक बार प्रस्तुत किया जाता है (HTML में):

<link rel="stylesheet" href="static/css/bootstrap.css" type="text/css"> 
<link rel="stylesheet" href="static/css/style.css" type="text/css"> 

फिर भी ये लिंक वास्तव में कहीं भी नहीं जाते हैं (जब मैं उनसे जाता हूं तो मुझे Django से 404 त्रुटि मिलती है)। मुझे लगता है कि मैं urls.py में कुछ जोड़कर इसे ठीक कर सकता हूं, लेकिन मैंने सोचा था कि जब आप सर्वर चलाते हैं तो Django स्वचालित रूप से ऐसा करता है? मैं क्या खो रहा हूँ?

+2

आज़माएं: 'python manage.py findstatic --verbosity 2 css/styles.css' यह देखने के लिए कि Django आपकी स्थिर फ़ाइलों की तलाश में है। – deed02392

उत्तर

22

क्या आपने अपनी स्थिर फाइल निर्देशिका settings.py में परिभाषित की है?

मुझे लगता है कि आपके पास अपने इंस्टॉल किए गए ऐप्स में 'django.contrib.staticfiles', है।

आप अपने स्टैटिक फ़ाइलें dir निर्धारित नहीं किया है, तो आप कुछ इस तरह कर रही द्वारा किए जा सकेंगे:

import os.path 

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

STATICFILES_DIRS = (
    os.path.join(PROJECT_ROOT, 'static'), 
) 
+0

यूप मुझे 'django.contrib.staticfiles' लोड हो गया है और मुझे अपनी सेटिंग्स फ़ाइल में 'STATIC_URL = '/ static /'' मिला है। – n0pe

+0

क्या आपने अपने स्थिर फ़ोल्डर के पूर्ण पथ के साथ STATICFILES_DIRS भर दिया है? उपर्युक्त उत्तर की तरह कहा। – shadrx

+0

नहीं! मैंने अपनी स्थिर निर्देशिका के लिए पूर्ण ओएस पथ जोड़ा और यह काम किया। बहुत बहुत धन्यवाद। – n0pe

1

मैंने सोचा था कि जब आप सर्वर चलाते हैं तो Django ने स्वचालित रूप से ऐसा किया था?

आपको ऐसा क्यों लगता था? यदि आपने आधिकारिक दस्तावेज़ीकरण का पालन किया है, तो आपको वह नहीं मिलेगा। पढ़ें here में उन्हें सेवा देने के लिए आपको क्या करना है।

एक और समस्या है। आपका STATIC_URL एक सापेक्ष लिंक है, इसलिए ब्राउज़ करें इसे मौजूदा पेज यूआरएल में जोड़ें। तो यदि आप पेज /foo पर हैं, 'static/css/style.css'/foo/static/css/style.css' पर मूल्यांकन करता है।

सुनिश्चित करें कि यह या तो / - यानी /static/ से शुरू होता है - या एक पूर्ण यूआरएल है, यानी http://myserver.com/static/

+0

मैं इसे स्थानीय रूप से चला रहा हूं, इसलिए मैंने उसी परिणाम के साथ 'लोकलहोस्ट/स्थिर/',' लोकहोस्ट: 8000/स्थिर 'और'/static/'सभी को आजमाया। जब मैंने 'लोकलहोस्ट' विधि का उपयोग किया, तो मुझे बस क्रोम से 'लगभग: रिक्त' पृष्ठ मिला। जब मैंने '/ static /' का उपयोग किया, तो मुझे एक और 404 मिला। – n0pe

+0

आपके द्वारा दिए गए लिंक के जवाब में, मैं 'रनरवर विधि' का उपयोग कर रहा हूं और मेरी फ़ाइलें STATIC_URL पर हैं, जो (दस्तावेज़ों के अनुसार) का अर्थ है कि इसे स्वचालित होना चाहिए । मैंने लिंक द्वारा सुझाए गए मॉड्यूल को आयात करने की कोशिश की और अभी भी कुछ भी नहीं। – n0pe

1

चेक अगर STATICFILES_FINDERS अपने settings.py

https://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/#std:setting-STATICFILES_FINDERS

डिफ़ॉल्ट मान में परिभाषित किया गया है STATICFILES_FINDERS का पर्याप्त है लेकिन आपके पास 2 विकल्प हैं:

  • यदि आप किसी एप्लिकेशन के अंदर स्थिर फ़ाइल है और करने की जरूरत है अपने INSTALLED_APPS

  • में इस एप्लिकेशन को हो रही है या आप अगर उम्मीद व्यवहार एक की जा रही है स्टैटिक फ़ाइलें करने के लिए अपने पथ के साथ STATICFILES_DIRS परिभाषित करने की जरूरत django.contrib.staticfiles.finders.FileSystemFinder

3

यह स्थिर/मीडिया/खिड़कियों के लिए Django में टेम्पलेट उपयोग करने के लिए काम कर रहे समाधान,

settings.py है

import os.path 

STATIC_ROOT = '' 

STATIC_URL = '/static/' 

STATICFILES_DIRS = (
    os.path.join('static'), 
) 
0

मुझे भी इस समस्या का सामना करना पड़ा। और मैं इस तरह href में संशोधन से समस्या हल हो:

<html> 
<link rel="stylesheet" href="{{STATIC_URL}}css/bootstrap.css" type="text/css"> 
<link rel="stylesheet" href="{{STATIC_URL}}css/style.css" type="text/css"> 
</html> 
3

मेरे समस्या settings.py फ़ाइल में "STATICFILES_DIRS" जोड़कर

STATIC_URL = '/static/' 
STATICFILES_DIRS = (os.path.join('static'),) 
-3

मेरे समाधान सेटिंग्स में DEBUG = True था द्वारा हल किया गया था।

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