2012-04-18 11 views
12

लोड नहीं होंगी मैं अपनी पहली परियोजना पर काम कर रहा एक Django नौसिखिया हूं और स्थिर फ़ाइलों के साथ समस्या है।Django स्थिर फाइलें

मैंने django.contrib.auth का उपयोग करके एक सरल ऑथ सिस्टम बनाया है जिसमें दो टेम्पलेट्स शामिल हैं: mysite/templates/index.html और mysite/templates/registration/login.html। मेरे पास mysite/static में वैश्विक स्थैतिक सामग्री है जो मैं सभी ऐप्स द्वारा प्रदान किए गए सभी टेम्पलेट्स तक पहुंचने में सक्षम होना चाहता हूं।

mysite/templates/index.html<img src="{{ STATIC_URL }}pics03.jpg"/> जो "static/pics03.jpg" और लोड ठीक के रूप में renders जब मैं यूआरएल localhost:8000/

mysite/templates/registration/login.html<img src="{{ STATIC_URL }}pics03.jpg"/> शामिल जो भी "static/pics03.jpg" के रूप में प्रस्तुत करने और लोड नहीं करता है जब मैं यूआरऍल की "localhost:8000/accounts/login/"

मेरी यूआरएल में जाएँ शामिल हैं। मेरे पास है:

urlpatterns = patterns('', 
    url(r'^$', 'mysite.views.home'), # plays index.html template 
    url(r'^accounts/login/$', 'django.contrib.auth.views.login'), 

मेरी सेटिंग्स में मेरे पास है:

PROJECT_DIR = os.path.dirname(__file__) 

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. 
    os.path.join(PROJECT_DIR,'static'), 
) 

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

STATIC_URL = '/static/' 

STATIC_ROOT = '' 

मैं धारणा है कि Django STATICFILES_DIRS में वैश्विक स्थैतिक सामग्री की तलाश में किया जाना चाहिए के तहत किया गया है, लेकिन यहां तक ​​कि अगर मैं करने के लिए एक पूर्ण पथ के लिए वहाँ में यूआरएल को बदलने यह login.html के लिए स्थैतिक सामग्री नहीं मिल रहा है स्थिर फ़ोल्डर। क्या कोई इस पर प्रकाश डाला सकता है?

उत्तर

18

आपकी समस्या यह है कि आप यूआरएल "/ स्थिर /" अपने urls.py

में कहीं आप अपाचे या nginx की तरह एक वेब सर्वर के माध्यम से अपने आवेदन की सेवा तो यह सामान्य रूप में वेब सर्वर संभाल होता है को सुन नहीं कर रहे है स्थैतिक फाइलें स्वयं।

विकास के लिए Django अंत में, एक अंतर्निहित स्थिर सर्वर

urls.py करने के साथ आता है जोड़ने

from django.contrib.staticfiles.urls import staticfiles_urlpatterns 
urlpatterns += staticfiles_urlpatterns() 

यह क्या करता है/स्थिर/यूआरएल जोड़ सकते हैं और आप यह बताने के लिए है बिना वेबसर्वर के उन लोगों की सेवा करें।

यह

url(
    regex=r'^static/(?P<path>.*)$', 
    view='django.views.static.serve', 
    kwargs={'document_root': settings.STATIC_ROOT,} 
) 

के बराबर है कुछ लोगों को आपको बताएगा कि आप देव-केवल नियमों का उपयोग करने के लिए एक "अगर settings.DEBUG" में URL-नियम रैप करने के लिए की जरूरत है, लेकिन यह नहीं है पर जरूरत सब और वास्तव में मुझे लगता है कि एक बुरी सलाह है।

+0

को तैनात करने के लिए तैयार नहीं है, यह समस्या थी .. धन्यवाद! – JimJay

+0

वैसे, वास्तव में बाद के मामले में उस नियम को लपेटना आवश्यक है। यदि आप django के कोड पर नज़र डालते हैं तो आप देखेंगे कि दृश्य DEBUG के लिए कोई जांच नहीं करता है। –

+2

दृश्य कभी हिट नहीं होता है क्योंकि आपका वेबसर्वर उनको पकड़ने और स्थिर फ़ाइलों की सेवा करने के लिए स्थापित किया जाता है, इसलिए कोई चेक आवश्यक नहीं है। – krs

1

क्या आपको रनरवर में निर्माण का उपयोग करते समय परेशानी हो रही है या आप अपाचे या इसी तरह का उपयोग कर रहे हैं? मैंने थोड़ा सा संघर्ष किया है। मेरे द्वारा अनुसरण किए जाने वाले दस्तावेज़ हैं: https://docs.djangoproject.com/en/dev/howto/static-files/

जब आप तैनाती के लिए तैयार हों तो दूसरा भाग महत्वपूर्ण है। आपको एक स्थैतिक रूट (जो शुरू करने के लिए खाली होगा) को परिभाषित करने की आवश्यकता है और manage.py collectstatic कमांड को अपनी फाइल में उस फ़ोल्डर में स्थिर फ़ाइलों को स्थानांतरित करने के लिए चलाएं। फिर आप वहां से उनकी सेवा कर सकते हैं।

+0

मैं वर्तमान में रनरवर का उपयोग कर रहा हूं, – JimJay

0

STATIC_ROOT='' से STATIC_ROOT='/' बदल रहा है?

ऐसा लगता है कि केवल एक ही अंतर यह है कि static/pics03.jpg (सापेक्ष पथ) होम पेज पर मौजूद है, लेकिन दूसरे पर नहीं है।

पूर्ण पथ /static/pics03.jpg दोनों मामलों में मौजूद है। यदि STATIC_ROOT बदलना मदद नहीं करता है, तो यूआरएल की शुरुआत में बस / जोड़ें।

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