প্রশ্নের সবচেয়ে গুরুত্বপূর্ণ অংশটি বিষয়টিতে রয়েছে।
আমি ভাবছি কোন ক্ষেত্রে কোন ট্যাগটি সেরা। তদুপরি ... আমি কোডগুলি পেয়েছি, এটিও টেমপ্লেটগুলির settings.STATIC_URL
অন্তর্ভুক্ত use{{STATIC_URL}}
আমি একটু বিভ্রান্ত।
প্রশ্নের সবচেয়ে গুরুত্বপূর্ণ অংশটি বিষয়টিতে রয়েছে।
আমি ভাবছি কোন ক্ষেত্রে কোন ট্যাগটি সেরা। তদুপরি ... আমি কোডগুলি পেয়েছি, এটিও টেমপ্লেটগুলির settings.STATIC_URL
অন্তর্ভুক্ত use{{STATIC_URL}}
আমি একটু বিভ্রান্ত।
উত্তর:
অন্তর্নির্মিত static
টেমপ্লেট ট্যাগ "স্ট্যাটিক ফাইলগুলিতে [সেগুলিতে লিখিত আছে যেগুলি সংরক্ষণ করা হয়েছে STATIC_ROOT
"।
staticfiles
Contrib অ্যাপ্লিকেশনের 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 এ সংজ্ঞায়িত স্টোরেজ থেকে ফাইলগুলি সরবরাহ করতে হবে use এটি আর প্রয়োজন হয় না" "
{% load static %}
।
পার্থক্যটি কী হওয়ার কথা তা আমি জানি না, তবে আমি ব্যবহারের ক্ষেত্রে পার্থক্য পেয়েছি (অ্যাপাচে দিয়ে জাজানো ১.৯.১ ব্যবহার করে, পাইথনের ৩.৪-তে ডাব্লুএসজি)। আমার অ্যাপে ImageFields
ডাটাবেসে আমার কিছু চিত্র রয়েছে some আমি যদি আমার টেমপ্লেটে এই জাতীয় কোড ব্যবহার করি:
<a href="object-{{object.id}}"><img src="{% static object.image %}" height="200px"></a>
তারপরে, আমি যদি ব্যবহার করি {% load static %}
, জাঙ্গো একটি TypeError
( Cannot mix str and non-str arguments
) ফেলে দেয় । এটি সম্ভবত এটি কারণ এটি object.image
স্ট্রিং নয়, এটি একটি ImageField
, যা পরবর্তী পর্যায়ে স্ট্রিংয়ে রূপান্তরিত হয়। তবে, যদি কেউ এর ব্যবহার {% load staticfiles %}
না করে তবে ত্রুটি দেখা দেয়।
দুর্ভাগ্যক্রমে, আমি সমস্যাটি ডিবাগ করার চেষ্টা করে ঘন্টা ব্যয় করার পরে এই পার্থক্যটি আবিষ্কার করেছি। আমি প্রথম বিকল্পটি ব্যবহার করার সময়, যেমনটির মতো স্ট্রিং-কনভার্টারের পদ্ধতি যুক্ত করার জন্য একটি কাজের সন্ধান করতে সক্ষম হয়েছি:
#image string
def image_str(self):
return str(self.image)
আশা করি এই জ্ঞান কারও কাজে আসবে।
জ্যাঙ্গো ডকুমেন্টেশন এখন পছন্দ করে {% 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".
ক্লাউড পরিষেবা বা সিডিএন থেকে স্ট্যাটিক ফাইলগুলি পরিবেশন করার জন্য নথি হিসাবে ফাইল স্থাপন করতে একটি স্থানীয়-স্থানীয় স্টোরেজ ব্যাকএন্ড ব্যবহার করার সময় এটি বিশেষত কার্যকর।
আপনি যদি কোনও স্থির 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 %}