प्रश्न का सबसे महत्वपूर्ण हिस्सा विषय में है।
मैं सोच रहा हूं कि कौन सा टैग किस मामले के लिए सबसे अच्छा है। इसके अलावा ... मुझे कोड मिला, वह भी टेम्प्लेट में settings.STATIC_URL
शामिल है {{STATIC_URL}}
।
मैं थोड़ा उलझन में हूँ।
प्रश्न का सबसे महत्वपूर्ण हिस्सा विषय में है।
मैं सोच रहा हूं कि कौन सा टैग किस मामले के लिए सबसे अच्छा है। इसके अलावा ... मुझे कोड मिला, वह भी टेम्प्लेट में settings.STATIC_URL
शामिल है {{STATIC_URL}}
।
मैं थोड़ा उलझन में हूँ।
जवाबों:
अंतर्निहित static
टेम्प्लेट टैग "लिंक [s] स्थिर फ़ाइलों के लिए जो STATIC_ROOT
" में सहेजे गए हैं ।
staticfiles
योगदान एप्लिकेशन की static
टेम्पलेट टैग "के लिए कॉन्फ़िगर का उपयोग करता STATICFILES_STORAGE
है, जो" विशेष रूप से उपयोगी है जब एक गैर स्थानीय भंडारण बैकेंड का उपयोग करके फ़ाइलें तैनात करने के लिए "है दी रिश्तेदार पथ के लिए पूर्ण URL बनाने के लिए भंडारण"।
अंतर्निहित static
टेम्पलेट टैग के दस्तावेज़ (ऊपर लिंक किए गए) में एक नोट है जो staticfiles
कंट्रीब ऐप के static
टेम्प्लेट टैग का उपयोग करने के लिए कहता है "यदि आपके पास एक उन्नत उपयोग का मामला है जैसे कि क्लाउड सेवा का उपयोग स्थिर फ़ाइलों की सेवा करने के लिए", और यह इस का उदाहरण देता है ऐसा करने से:
{% load static from staticfiles %}
<img src="{% static "images/hi.jpg" %}" alt="Hi!" />
आप इस्तेमाल कर सकते हैं {% load staticfiles %}
बजाय {% load static from staticfiles %}
अगर आप चाहते हैं, लेकिन बाद अधिक स्पष्ट है।
{% load static %}
। "पुराने संस्करणों में, आपको {% load static from staticfiles %}
STATICFILES_STORAGE में परिभाषित संग्रहण से फ़ाइलों की सेवा करने के लिए अपने टेम्पलेट में उपयोग करना था। अब इसकी आवश्यकता नहीं है।"
{% load static %}
।
मुझे नहीं पता कि अंतर क्या माना जाता है, लेकिन मुझे एक उपयोग मामला अंतर (django 1.9.1 का उपयोग करके अपाचे के माध्यम से चलना, पायथन 3.4 पर wsgi) मिला। मेरे ऐप ImageFields
में, डेटाबेस में मेरी कुछ छवियां हैं । अगर मैं अपने टेम्पलेट में इस तरह कोड का उपयोग करता हूं:
<a href="object-{{object.id}}"><img src="{% static object.image %}" height="200px"></a>
फिर, अगर मैं उपयोग करता हूं, तो {% load static %}
django फेंकता है TypeError
( Cannot mix str and non-str arguments
)। यह संभवतः इसलिए है क्योंकि object.image
यह एक स्ट्रिंग नहीं है, यह एक है ImageField
, जो कुछ बाद के चरण में एक स्ट्रिंग में परिवर्तित हो जाता है। हालाँकि, यदि कोई उपयोग करता है तो {% load staticfiles %}
ऐसी कोई त्रुटि नहीं होती है।
दुर्भाग्य से, मैंने इस अंतर का पता लगाने में घंटों समय बिताने के बाद समस्या को दूर करने की कोशिश की। मैं पहले विकल्प का उपयोग करते समय एक वैकल्पिक हल खोजने में कामयाब रहा, जैसे कि स्ट्रिंग-कन्वर्टर विधि को इस तरह ऑब्जेक्ट में जोड़ना:
#image string
def image_str(self):
return str(self.image)
आशा है यह ज्ञान किसी के काम आएगा।
Django प्रलेखन अब पसंद है {% load static %}
।
{% load staticfiles %}
काम करता है लेकिन मुझे लगता है कि यह पदावनत है।
https://docs.djangoproject.com/en/dev/ref/templates/builtins/#static
डॉक्स का संदर्भ लें , जहां इसका एक अच्छा विवरण है। दरअसल {% static %}
टेम्पलेट टैग STATICFILE_STORAGE का स्थान जानता है
डॉक्स कहते हैं:
{% load static from staticfiles %} <img src="{% static "images/hi.jpg" %}" alt="Hi!" /> The previous example is equal to calling the url method of an instance of STATICFILES_STORAGE with "images/hi.jpg".
क्लाउड सेवा या CDN से स्थिर फ़ाइलों को सेवित करने के लिए फाइल के रूप में तैनात करने के लिए गैर-स्थानीय भंडारण बैकएंड का उपयोग करते समय यह विशेष रूप से उपयोगी है।
यदि आप इसे प्रदर्शित किए बिना एक स्थिर URL प्राप्त करना चाहते हैं, तो आप कुछ भिन्न कॉल का उपयोग कर सकते हैं:
{% load static from staticfiles %} {% static "images/hi.jpg" as myphoto %} <img src="{{ myphoto }}" alt="Hi!" />
उम्मीद है की वो मदद करदे!!
{% load static %}
, {% load staticfiles %}
, {{STATIC_URL}}
... और पता है कि मैं के बीच अंतर है क्या पता नहीं है {% load static %}
और{% load static from staticfiles %}