सवाल django 1.5 - स्थिर टैग के अंदर चर का उपयोग कैसे करें


मैं वर्तमान में अपने प्रोजेक्ट में सभी स्थिर फाइल संदर्भों को नए {% स्थिर%} टैग में माइग्रेट कर रहा हूं जो django 1.5 पेश किया गया है, लेकिन मुझे कोई समस्या है, कुछ स्थानों पर मैं सामग्री प्राप्त करने के लिए चर का उपयोग करता हूं। नए टैग के साथ मैं नहीं कर सकता, क्या इसे हल करने का कोई तरीका है?

वर्तमान कोड:

<img src="{{ STATIC_URL }}/assets/flags/{{ request.LANGUAGE_CODE }}.gif" alt="{% trans 'Language' %}" title="{% trans 'Language' %}" />

यह क्या होना चाहिए (यह काम नहीं करता है):

<img src="{% static 'assets/flags/{{ request.LANGUAGE_CODE }}.gif' %}" alt="{% trans 'Language' %}" title="{% trans 'Language' %}" />

76
2018-05-20 18:24


मूल




जवाब:


आप के साथ स्ट्रिंग को संयोजित करने में सक्षम होना चाहिए add टेम्पलेट फिल्टर:

{% with 'assets/flags/'|add:request.LANGUAGE_CODE|add:'.gif' as image_static %}
  {% static image_static %}
{% endwith %}

आप जो करने की कोशिश कर रहे हैं वह काम नहीं करता है static टेम्पलेट टैग क्योंकि यह केवल एक स्ट्रिंग या एक चर लेता है:

{% static "myapp/css/base.css" %}
{% static variable_with_path %}
{% static "myapp/css/base.css" as admin_base_css %}
{% static variable_with_path as varname %}

114
2018-05-20 18:45



मैंने अभी इसका परीक्षण किया है, यह या तो काम नहीं करता है। ऐसा लगता है कि मुझे इसके लिए एक कामकाज सोचना होगा - Oscar Carballal
क्या आप "यह काम नहीं करते" के रूप में अधिक विशिष्ट हो सकते हैं? बस इसका परीक्षण किया और आउटपुट /static/assets/flags/de.gif बिना किसी समस्या के... - Bernhard Vallant
मेरी गलती! मेरे पास स्थैतिक टैग लोड नहीं हुआ था, यह समाधान पूरी तरह से काम करता था :) - Oscar Carballal
@daveoncode अनुरोध आपके पास टेम्पलेट संदर्भ में उपलब्ध होना चाहिए django.core.context_processors.request आपके लिए जोड़ा गया TEMPLATE_CONTEXT_PROCESSORS आपके में settings.py। - Bernhard Vallant
एक समान मुद्दा, यह काम नहीं करता है: {{mus.bio | जोड़ें: LANGUAGE_CODE | कट: "\ n"}} मैं लैंग का उपयोग करना चाहता हूं। एक टेम्पलेट var में कोड। कोई मदद? - Timo


क्लीनर तरीका एचटीएमएल की शुरुआत से एक चर के रूप में {% static%} को सेट करना है ताकि हम इसे किसी भी तरह से उपयोग कर सकें।

{% load static %}
{% static "" as baseUrl %}
<img src="{{ baseUrl }}/img/{{p.id}}"></img>

18
2018-03-03 03:37



यह विफल रहता है यदि आप हस्ताक्षरित यूआरएल के साथ एस 3 स्टोरेज का उपयोग कर रहे हैं, क्योंकि स्टोरेज बैकएंड के रूप में प्रत्येक फाइल के लिए यूआरएल तैयार करने के लिए नहीं कहा जाता है। - shuckc
यह एक टेम्पलेट में बहुत अच्छा लग रहा है लेकिन स्थिर का उपयोग करने के एक साफ तरीके से यह एक हैक से अधिक है। - Mikuz


मुझे यह स्थिर पथ के लिए खाली स्ट्रिंग का उपयोग करके और फिर अपने चर में अपने चर का उपयोग करके काम करने के लिए मिला:

<a href= "{% static "" %}{{obj.a}}/{{obj.b}}/{{obj.c}}.gz" >Name</a>

11
2018-03-13 07:47



यह सुपर चालाक है, लेकिन @horbor क्या कहा, आप इसे और भी सरल बना सकते हैं! docs.djangoproject.com/en/1.6/ref/templates/builtins/... - daviddeath


@rounin, आप कम से कम, उपयोग कर सकते हैं

{% get_static_prefix %} 

जो लोड हो जाएगा जब आप {% स्थिर स्थिर%} लोड करेंगे। यह सिर्फ अधिक प्राकृतिक है तो {% स्थिर ''%} :)


10
2018-05-18 18:21



यह ManifestStaticfilesStorage जैसी चीजों के साथ काम नहीं करेगा जो बदलता है foo.js में foo.8c9a23d.js - Kos


इसके लायक होने के लिए, मुझे लगता है कि यह सबसे आसान तरीका है:

<img src="{% static 'assets/flags/'|add:request.LANGUAGE_CODE|add:'.gif' %}" ... >

यह और पुराना सवाल है और मुझे यकीन नहीं है कि इस विधि को फिर से किया जा सकता है, लेकिन अब, Django 2.0 में यह मेरे लिए ठीक काम करता प्रतीत होता है।


2
2018-03-28 04:45