2012-10-18 16 views
11

मैं sorl थंबनेल के साथ मेरी स्टैटिक फ़ाइलें आकार बदलने के लिए चाहते हैं, लेकिन यह काम नहीं करता हैस्थैतिक फ़ाइलों को थंबनेल कैसे करें?

यहाँ है मेरी कोड

{% if not new.photo %} 

{% with path="{{STATIC_URL}}/images/empty-news.jpg" %} 
{% thumbnail path "80x80" crop="center" as im %} 
<a href="#" class="image"><img alt="" src="{{im.url}}" class="frame2"></a> 
{% endthumbnail %} 
{% endwith %} 

{% else %} 
{% thumbnail new.photo "80x80" crop="center" as im %} 
<a href="{% url news_detail new.slug %}" class="image"> 
<img alt="" src="{{im.url}}" class="frame2"></a> 
{% endthumbnail %} 
{% endif %} 

अगर मैं छवि है यह छवि दिखाता लेकिन जब मैं न छवि है मैं डिफ़ॉल्ट छवि का उपयोग नहीं कर सकते क्योंकि थंबनेल

+0

क्या आप सुनिश्चित हैं कि 'पथ' में छवि के लिए वैध लिंक है? –

+0

यहां 'MEDIA_ROOT' तक सीमित होने के लिए आसान-थंबनेल तर्क है https://github.com/SmileyChris/easy- थंबनेल /issues/210 –

उत्तर

3

ईमानदारी से काम नहीं करता है ... यह ठीक दिखता है; जिसका अर्थ है कि आपके सेटअप में शायद कुछ आसान गलत है।

संभावित खराब सेटअप: आप अपनी सेटिंग्स में STATIC_URL कैसे परिभाषित कर रहे हैं? इसके अलावा, DEBUG का मूल्य क्या है (सुनिश्चित करें कि यह True पर सेट है यदि आप स्थानीय रूप से विकास कर रहे हैं)? जैसा कि @ गोलिनी ने बताया, आपका मार्ग गड़बड़ हो सकता है। थंबनेल ब्लॉक को बाहर खींचने का प्रयास करें, और अपनी छवि का src {{ STATIC_URL }}/images/empty-news.jpg पर सेट करें और थंबनेल करने का प्रयास करने से पहले यह कार्य सत्यापित करें।{% thumbnail %} ब्लॉक के सभी संदर्भ से पहले अपने टेम्पलेट में {% load thumbnail %} डाल करने के लिए सुनिश्चित करें:

थंबनेल लोड करने के लिए भूल।

+1

मेरी स्थिर यूआरएल और थंबनेल सेटिंग्स ठीक हैं। वे काम करते हैं।मैं अन्य छवियों को थंबनेल कर सकता हूं जो डायनेमिक है लेकिन यदि यह स्थिर है, तो यह काम नहीं करता है। इसके अलावा मेरा स्थिर यूआरएल सही ढंग से परिभाषित किया गया है। – aysekucuk

2

मैं एक ही मुद्दे के माध्यम से काम कर रहा हूं। ऐसा लगता है कि यदि आप अपने टेम्पलेट्स में STATIC_URL का उपयोग करना चाहते हैं तो आपको यह सुनिश्चित करना होगा कि थंबनेल टैग में आप जिस पथ को पास करते हैं वह पूर्ण है (पथ का इलाज करना जैसे कि यह बाहरी था।)

स्पष्ट रूप से सापेक्ष पथ केवल काम करते हैं MEDIA_ROOT के भीतर छवियों के लिए, मॉडल से आने वाली छवियों के लिए प्रतीत होता है।

एक परीक्षण के रूप में, पूर्ण http पथ में टाइप करने का प्रयास करें।

देखें: http://sorl-thumbnail.readthedocs.org/en/latest/examples.html

3

निम्नलिखित

{% with STATIC_URL|add:"/images/empty-news.jpg" as path %} 
    {% thumbnail path "80x80" crop="center" as im %} 
     <a href="#" class="image"> 
      <img alt="" src="{{im.url}}" class="frame2"></a> 
    {% endthumbnail %} 
{% endwith %} 
+0

यह मेरे लिए काम नहीं करता क्योंकि सॉर्ल एक सापेक्ष यूआरएल स्वीकार नहीं करेगा। मैंने इसे एक पूर्ण यूआरएल स्वीकार करने के लिए अनुकूलित किया (इस पृष्ठ पर कहीं और मेरा जवाब देखें)। – seddonym

7

बदसूरत विकल्प है कि मेरे लिए काम किया, रास्ता है कि आप सामान्य रूप से static टेम्पलेट टैग को पास किए हैं में गुजर काम करेंगे (ध्यान दें कि यह मान लिया गया है http प्रोटोकॉल, इसलिए इसे बेहतर किया जा सकता है):

{% with 'http://'|add:request.get_host|add:STATIC_URL|add:image_path as path %} 
    {% thumbnail path "720x306" crop="center" as im %} 
     <img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}"> 
    {% endthumbnail %} 
{% endwith %} 

यह पूर्ण पथ का निर्माण करके काम करता है स्थैतिक छवि।

0

थोड़ा और uglyness मैं कस्टम फ़िल्टर बना कवर करने के लिए, settings.py SITE_URL में एक निरंतर का उपयोग कर:

settings.py

[...] 
SITE_URL = "google.it" 
[...] 

templatetags/staticthumb.py

from django.conf import settings 

from django import template 

register = template.Library() 

@register.filter() 
def static_url(value): 
    return ''.join(["http://", settings.SITE_URL, settings.STATIC_URL, value]) 

तब उपयोग करने के लिए यह टेम्पलेट में:

{% load thumbnail staticthumb %} 

{% with image_path|static_url as path %} 
    {% thumbnail path "720x306" crop="center" as im %} 
     <img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}"> 
    {% endthumbnail %} 
{% endwith %}