2012-08-30 16 views
7

मैं वेबफैक्शनल पर अपने सर्वर पर वेबपैप चलाने की कोशिश करते समय STATIC_URL और STATIC_ROOT के बारे में किसी समस्या में फंस गया हूं।सर्वर पर Django में STATIC_ROOT

जब मैं वेबपृष्ठ लोड करता हूं तो सभी अनुरोध अच्छी तरह से काम करते हैं, इस तथ्य को छोड़कर कि {{STATIC_URL}} के साथ कोई भी लिंक काम कर रहा है या लोड हो रहा है।

तो एक सामान्य त्रुटि है कि फ़ायरबग पर दिखाई देता है:

GET http://mydomain/static/extras/h5bp/js/libs/modernizr-2.5.3.min.js 500 (Internal Server Error) 

मेरे सेटअप है:

urls.py मैं कुछ नहीं किया है, और वहाँ स्थिर फ़ाइलों के बारे में कुछ भी नहीं है।

settings.py डीबग = झूठी

STATIC_ROOT = '/home/mydomain/webapps/static_app/' 
STATIC_URL = 'http://mydomain/static/' 
STATICFILES_DIRS =() 

views.py दृश्य उदाहरण

@csrf_exempt 
def IndexView(request): 
    try: 
     request.user.is_authenticated() 
    except AttributeError: 
     return render_to_response('index.html', 
           {'request': request,}, 
           context_instance=RequestContext(request)) 

    return render_to_response('index.html', 
        {'request': request, 'profile' : request.user}, 
        context_instance=RequestContext(request)) 

index.html कोड का एक हिस्सा

<script src="{{ STATIC_URL }}extras/h5bp/js/libs/modernizr-2.5.3.min.js"></script> 

अच्छी तरह से नहीं मिला, मैं सभी बिंदुओं का पालन करता हूं: https://docs.djangoproject.com/en/1.4/howto/static-files/ और यह एक और एक: http://docs.webfaction.com/software/django/getting-started.html

मैं सही स्थापित ऐप्लिकेशन, middlewares, template_contexts उपयोग कर रहा हूँ।

यदि मुझे कुछ याद आ रहा है तो कृपया मुझे पता लगाने में मदद करें।

अग्रिम धन्यवाद!

--edit

मुझे कहना है, अगर मैं सिर्फ डीबग बदल = सच इच्छा ठीक काम करता है।

if settings.DEBUG: 
    # static files (images, css, javascript, etc.) 
    urlpatterns += patterns('', 
     (r'^media/(?P<path>.*)/$', 'django.views.static.serve', { 
     'document_root': settings.MEDIA_ROOT})) 

उत्तर

11

2 बातें एक उत्पादन environent कि विकास के वातावरण में की जरूरत नहीं है पर होना चाहिए:

क्योंकि urls.py पर मैं कोड के इस टुकड़े की है।

आपको manage.py collectstatic चलाना होगा - यह सभी स्थिर फ़ाइलों को आपके STATIC_ROOT निर्देशिका में एकत्र करता है।

आपको STATIC_URL यूआरएल पर अपनी STATIC_ROOT निर्देशिका की सेवा करनी होगी। आपके उत्पादन सेटअप पर वास्तव में निर्भर करता है। यह django भी संबंधित नहीं है; यह सब मायने रखता है कि STATIC_ROOT सामग्री STATIC_URL पर उपलब्ध है।

मान लें कि आप अपाचे का उपयोग कर रहे हैं, तो आप निर्देशिका के लिए एक यूआरएल उपनाम करेंगे।

Alias /static/ /path/to/my/static_root/ 

आप nginx उपयोग कर रहे हैं, यह होगा की तरह

location = /static/ { 
    alias /path/to/my/static_root/; 
} 

मैं सिर्फ महसूस किया आप webfaction उपयोग कर रहे हैं, जिस स्थिति में आप एक स्थिर आवेदन जो सचमुच में फ़ाइलों में कार्य करता है की स्थापना की कुछ आपके द्वारा परिभाषित यूआरएल पर लक्षित निर्देशिकाएं। मैं सटीक प्रक्रिया देखने के लिए अपने वेबफैक्शन लॉगिन को याद रखने की कोशिश कर रहा हूं, लेकिन इसे समझना मुश्किल नहीं होना चाहिए।

अद्यतन: वेबफैक्शन में लॉग इन; आप एक सिमलिंक एक एप्लीकेशन बना सकते हैं। आसान!

एक प्रतीकात्मक लिंक ऐप बनाएं जो/YOUR_STATIC_URL परोसता है/और इसे/YOUR_STATIC_ROOT/पर इंगित करता है। किया हुआ!

+0

धन्यवाद, सही काम करता है। बस थोड़ा सा सवाल, और मीडिया फ़ाइलों के बारे में? हमारे पास इसके लिए python manage.py collectstatic नहीं है, है ना? – cleliodpaula

+0

मीडिया फ़ाइलें आमतौर पर उपयोगकर्ता अपलोड की गई फ़ाइलों के लिए अधिक होती हैं, इसलिए उन्हें समय पर तैनात नहीं किया जा सकता है। –

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