{% भार स्थैतिक%} और {% भार स्थैतिक%} में क्या अंतर है


92

प्रश्न का सबसे महत्वपूर्ण हिस्सा विषय में है।

मैं सोच रहा हूं कि कौन सा टैग किस मामले के लिए सबसे अच्छा है। इसके अलावा ... मुझे कोड मिला, वह भी टेम्प्लेट में settings.STATIC_URLशामिल है {{STATIC_URL}}

मैं थोड़ा उलझन में हूँ।


मैं बस सब कुछ के लिए STATIC_URL का उपयोग करता हूं और यह मेरे लिए ठीक काम करता है
Maximas

1
@Maximas यह काम करता है, लेकिन मुझे लगता है कि इसका सबसे अच्छा अभ्यास नहीं है
KhoPhi

1
इनमें से कोई भी उत्तर अच्छा नहीं है। यह एक अधिक हालिया और पूर्ण उत्तर है
जारद

जवाबों:


60

अंतर्निहित 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 %}अगर आप चाहते हैं, लेकिन बाद अधिक स्पष्ट है।


30
Django V1.10 अब सिर्फ सिफारिश करता है {% load static %}। "पुराने संस्करणों में, आपको {% load static from staticfiles %}STATICFILES_STORAGE में परिभाषित संग्रहण से फ़ाइलों की सेवा करने के लिए अपने टेम्पलेट में उपयोग करना था। अब इसकी आवश्यकता नहीं है।"
जॉन सी

1
2016 से हमें केवल उपयोग करने की आवश्यकता है {% load static %}
उरई

5

मुझे नहीं पता कि अंतर क्या माना जाता है, लेकिन मुझे एक उपयोग मामला अंतर (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)

आशा है यह ज्ञान किसी के काम आएगा।



1

डॉक्स का संदर्भ लें , जहां इसका एक अच्छा विवरण है। दरअसल {% 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!" />

उम्मीद है की वो मदद करदे!!


17
मैं अभी भी पता नहीं है जब मैं का उपयोग करना चाहिए {% load static %}, {% load staticfiles %}, {{STATIC_URL}}... और पता है कि मैं के बीच अंतर है क्या पता नहीं है {% load static %}और{% load static from staticfiles %}
trikoder_beta

1
बस डॉक्टर से लाइनों का एक गुच्छा नकल वास्तव में मदद नहीं करता है
हसन इकबाल

1

{% load staticfiles %} बहुत मददगार होता है जब आप S3 जैसे विभिन्न स्टोरेज का उपयोग कर रहे होते हैं, तब यह S3 URL में बदल जाएगा

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.