django 1.5 - স্থির ট্যাগের মধ্যে ভেরিয়েবলগুলি কীভাবে ব্যবহার করবেন


105

আমি বর্তমানে আমার প্রকল্পের সমস্ত স্ট্যাটিক ফাইলের রেফারেন্সগুলিকে নতুন {% স্থিতিশীল%} ট্যাগে স্থানান্তরিত করছি যা জাঙ্গো ১.৫ প্রবর্তিত হয়েছে, তবে আমার সমস্যা হচ্ছে, কিছু জায়গায় আমি সামগ্রীগুলি পেতে ভেরিয়েবল ব্যবহার করি। আমি যে নতুন ট্যাগটি পারি না, এটি সমাধান করার কোনও উপায় আছে কি?

বর্তমান কোড:

<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' %}" />

উত্তর:


149

আপনি 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 %}

24

একটি ক্লিনার উপায় হ'ল এইচটিএমএল এর শুরু থেকে vari% স্থিতিশীল% a একটি পরিবর্তনশীল হিসাবে সেট করা হয় যাতে আমরা এটি যেভাবে চাই তা ব্যবহার করতে পারি।

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

3
আপনি যদি স্বাক্ষরিত ইউআরএলগুলির সাথে এস 3 স্টোরেজ ব্যবহার করেন তবে প্রতিটি ফাইলের জন্য ইউআরএল প্রস্তুত করতে স্টোরেজ ব্যাকএন্ড হিসাবে এটি ব্যর্থ হয়।
shuckc

2
এটি কোনও টেম্পলেটে দেখতে খুব সুন্দর দেখাচ্ছে তবে এটি স্ট্যাটিক ব্যবহারের পরিষ্কার পদ্ধতির চেয়ে হ্যাকের চেয়ে বেশি।
মিকায়েল লিন্ডলফ

23

যার পক্ষে এটি মূল্যবান, আমি মনে করি এটি সবচেয়ে সহজ উপায়:

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

এটি ও পুরানো প্রশ্ন এবং আমি নিশ্চিত নই যে এই পদ্ধতিটি আবার করা সম্ভব হয়েছিল কিনা, তবে এখন, জাঙ্গো ২.০ এ এটি আমার পক্ষে ভাল কাজ করে বলে মনে হচ্ছে।


4
আমি নিশ্চিত করি যে এই পদ্ধতিটি জ্যাঙ্গো ২.০ এ কাজ করে এবং আমার মতে, সমস্যাটি সমাধান করার সর্বোত্তম উপায় এটি।
অরেংফুট

আমার জন্য কাজ করে, তবে ডকস এই সতর্কবার্তাটি নিয়ে আসে: "পূর্ণসংখ্যার সাথে
জড়িত স্ট্রিংগুলি

হ্যাশ ফাইলের নামের সাথে কাজ করে না (ম্যানিফেস্টস্ট্যাটিক ফাইলস স্টোরেজ)।
রান_ত_রেস

@ রুন_ও_রেস যা আসলে সম্পর্কিত। তবে যেহেতু আমরা জানি প্রথম যুক্তিটি পূর্ণসংখ্যা হতে পারে না, এক্ষেত্রে এটি নিরাপদ হওয়া উচিত। এছাড়াও, হ্যাশ ফাইলের নামগুলিতে কি " স্ট্র " বা " যুক্ত " সংজ্ঞা দেওয়া আছে?
অ্যালিকানডিল

17

স্থিতিশীল পথের জন্য একটি খালি স্ট্রিং ব্যবহার করে এবং তারপরে আমার ভেরিয়েবলগুলি তাদের নিজস্ব বিভাগে ব্যবহার করে এই কাজটি করতে পেরেছি:

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

1
এটি দুর্দান্ত চালাক, তবে @ হোরবার যা বলেছিল, আপনি এটিকে আরও সহজ করতে পারেন! docs.djangoproject.com/en/1.6/ref/templets/builtins/…
ডেভিডাথ

2
খালি স্ট্রিং ব্যবহার না করে ব্যবহার করুন {% get_static_prefix %}
মার্টিজন পিটারস

13

@ আরনিন, আপনি কমপক্ষে ব্যবহার করতে পারেন

{% get_static_prefix %} 

যা লোড হবে যখন আপনি load% স্থির% load লোড করবেন} Just% স্থিতিশীল ''%} :) এরপরে এটি আরও স্বাভাবিক


এটি ম্যানিফেস্টস্ট্যাটিক foo.jsfoo.8c9a23d.js
Kos
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.