मेरे पास नए Django 1.3 स्थैतिक फ़ाइल ढांचे के बारे में एक सामान्य प्रश्न है।url रूट पर django staticfiles
मुझे वास्तव में Django 1.3 में पेश की गई नई Django staticfile कार्यक्षमता पसंद है। आम तौर पर, मैंने STATIC_URL = "/ static /" सेट किया है और मेरे टेम्पलेट्स में {{STATIC_URL}} टेम्पलेट टैग दर्ज किया है। यह बहुत अच्छा है कि विकास सर्वर स्वचालित रूप से स्थिर फ़ाइलों को कैसे कार्य करता है और मेरी सभी सामग्री को अपेक्षित के रूप में कार्य किया जाता है।
The {{ STATIC_URL }} would be substituted in the template and might serve up files like this...
example.com/static/css/master.css
example.com/static/images/logo.png
example.com/static/js/site.js
हालांकि, मैं एक विरासत साइट के साथ काम कर रहा हूं जहां स्थिर मीडिया यूआरएल रूट पर घुड़सवार है। उदाहरण के लिए, स्थिर यूआरएल के लिए पथ कुछ इस तरह दिख सकता है:
example.com/css/master.css
example.com/images/logo.png
example.com/js/site.js
यह "स्थिर" यूआरएल नाम स्थान का उपयोग नहीं करता।
मैं सोच रहा था कि स्थिर स्टेटस्पेस का उपयोग न करने और उपरोक्त यूआरएल की सेवा करने के लिए नई स्थैतिक कार्यक्षमता प्राप्त करने का कोई तरीका नहीं है, लेकिन फिर भी नए स्थैतिक ढांचे के लाभों को बनाए रखें (विकास सर्वर द्वारा प्रदत्त सामूहिक, स्थिर फाइलें, आदि)। मैंने STATIC_URL = "" और STATIC_URL = "/" को सेट करने का प्रयास किया, लेकिन न ही वांछित प्रभाव लग रहा था।
क्या नामस्थान के बिना स्थैतिक फ़ाइलों को सेवा देने के लिए स्थैतिक फ़ाइलों को कॉन्फ़िगर करने का कोई तरीका है? आपके विचार के लिए धन्यवाद।
urls.py
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = patterns('',
# ... the rest of your URLconf goes here ...
)
if settings.DEBUG:
urlpatterns += static('/css/', document_root='app_root/path/to/css/')
urlpatterns += static('/images/', document_root='app_root/path/to/images/')
urlpatterns += static('/js/', document_root='app_root/path/to/js/')
यह डीबग डेव सर्वर के लिए मीडिया के नक्शे होगा:
धन्यवाद जेडीआई। टेम्पलेट्स में, क्या मैं अभी भी {{STATIC_ROOT}} या बस इसे/css /,/images /,/js/.... के रूप में छोड़ दूंगा? –
यह अब स्थिर ऐप का हिस्सा नहीं होगा, क्योंकि इसे 'python manage.py collectstatic' के माध्यम से एकत्र नहीं किया जा सकता है। आप बस इस तरह के सादे यूआरएल का उपयोग करेंगे: '/ css/foo.css'। इन्हें व्यक्तिगत स्थानों से स्पष्ट रूप से परोसा जा रहा है। वे django परियोजना अंतरिक्ष के बाहर भी मौजूद हो सकते हैं। – jdi
document_root '/' से शुरू नहीं होना चाहिए, आपको अपने django प्रोजेक्ट की मूल निर्देशिका निर्दिष्ट करना है, उदाहरण के लिए: 'urlpatterns + = static ('/css/', document_root =' app_root/path/to/css/') ' –