स्थिर फ़ाइलों की सेवा कई तरीकों से प्राप्त की जा सकती है; यहाँ मेरे स्वयं के लिए नोट हैं:
- एक
static/my_app/
निर्देशिका जोड़ेंmy_app
(नीचे नामस्थान के बारे में नोट देखें)
- एक नई शीर्ष स्तर की निर्देशिका को परिभाषित करें और सेटिंग्स में उस पर STATICFILES_DIRS जोड़ें (ध्यान दें
The STATICFILES_DIRS setting should not contain the STATIC_ROOT setting
)
मैं पहले तरीके को पसंद करता हूं, और एक सेटअप जो कि प्रलेखन में परिभाषित तरीके के करीब है , इसलिए admin-custom.css
व्यवस्थापक शैलियों के एक जोड़े को ओवरराइड करने के लिए फ़ाइल की सेवा करने के लिए , मेरे पास एक सेटअप है:
.
├── my_app/
│ ├── static/
│ │ └── my_app/
│ │ └── admin-custom.css
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── static/
├── templates/
│ └── admin/
│ └── base.html
└── manage.py
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static/'
यह तब टेम्पलेट में उपयोग किया जाता है जैसे:
{% extends "admin/base.html" %}
{% load static %}
{% block extrahead %}
<link rel="stylesheet" href="{% static "my_app/admin-custom.css" %}">
{% endblock %}
विकास के दौरान, यदि आप django.contrib.staticfiles [एड: डिफ़ॉल्ट रूप से इंस्टॉल] का उपयोग करते हैं, तो यह DEBUG द्वारा True [...] पर सेट किए जाने पर स्वचालित रूप से किया जाएगा।
https://docs.djangoproject.com/en/1.10/howto/static-files/
जब तैनाती करते हैं, तो मैं collectstatic
nginx के साथ स्थिर फ़ाइलों को चलाता और सेवा करता हूं ।
डॉक्स जिसने मेरे लिए सारी उलझनें दूर कर दीं:
STATIC_ROOT
उस निर्देशिका का पूर्ण पथ जहाँ संग्रहणीय परिनियोजन के लिए स्थिर फ़ाइलें एकत्रित करेगा।
... यह आपकी स्थैतिक फ़ाइलों को स्थायी रूप से संग्रहीत करने का स्थान नहीं है। आपको ऐसा करना चाहिए कि जो निर्देशिकाएं staticfiles के खोजकर्ताओं द्वारा मिल जाएंगी, जो कि डिफ़ॉल्ट रूप से 'स्टेटिक /' ऐप उप-निर्देशिकाएं हैं और किसी भी निर्देशिका को आप STATICFILES_DIRS में शामिल करते हैं)।
https://docs.djangoproject.com/en/1.10/ref/settings/#static-root
स्टेटिक फ़ाइल नामस्थान
अब हम अपनी स्थिर फाइलों को सीधे my_app / static / (बजाय एक अन्य my_app उपनिर्देशिका बनाने के) में डालने में सफल हो सकते हैं, लेकिन यह वास्तव में एक बुरा विचार होगा। Django पहली स्टैटिक फ़ाइल का उपयोग करेगा, जिसका नाम उसके मैच से मिलता है, और यदि आपके पास किसी भिन्न एप्लिकेशन में एक ही नाम वाली स्टैटिक फ़ाइल है, तो Django उन दोनों के बीच अंतर करने में असमर्थ होगा। हमें सही तरीके से Django को इंगित करने में सक्षम होने की आवश्यकता है, और यह सुनिश्चित करने का सबसे आसान तरीका उन्हें नाम स्थान देना है। यही है, उन स्थिर फ़ाइलों को एक और निर्देशिका के अंदर रखकर आवेदन के लिए नाम दिया गया है।
https://docs.djangoproject.com/en/1.10/howto/static-files/
STATICFILES_DIRS
आपकी परियोजना में शायद स्थिर संपत्ति होगी जो किसी विशेष ऐप से बंधी नहीं हैं। अपने एप्लिकेशन के अंदर एक स्थिर / निर्देशिका का उपयोग करने के अलावा, आप अपनी सेटिंग्स फ़ाइल में निर्देशिकाओं (STATICFILES_DIRS) की एक सूची को परिभाषित कर सकते हैं जहां Django भी स्थिर फ़ाइलों की तलाश करेगा।
https://docs.djangoproject.com/en/1.10/howto/static-files/
from django.conf import settings
पाठ्यक्रम को मत भूलना