2010-04-18 163 views
0

目前有點卡住了,想知道是否有人可以協助。我正在使用django-adminfiles。這是一個整潔的小應用程序。我想用它將圖像插入到我正在構建的網站的帖子/文章/頁面中。Django模板標籤,生成模板塊標籤

django-adminfiles是如何工作的,它插入一個佔位符,即< < < ImageFile >>>,並使用django模板進行渲染。它還具有插入自定義選項(即插入中等圖像)的功能,我想我會用它來自動調整圖像大小並將其包含在帖子中(類似於WP的做法)。

Django-adminfiles利用sorl.thumbnail應用程序生成縮略圖。

所以我試圖測試生成縮略圖:

被用於呈現插入的圖像的當前模板是:

{% spaceless %} 
<img src="{{ upload.upload.url }}" width="{{ upload.width }}" height="{{ upload.height }}" class="{{ options.class }}" class="{{ options.size }}" alt="{% if options.alt %}{{ options.alt }}{% else %}{{ upload.title }}{% endif %}" /> 
{% endspaceless %} 

我嘗試修改該給:

{% load thumbnail %} 
{% spaceless %} 
<img src="{% thumbnail upload.upload.url 200x50 %}" width="{{ upload.width }}" height="{{ upload.height }}" class="{{ options.class }}" class="{{ options.size }}" alt="{% if options.alt %}{{ options.alt }}{% else %}{{ upload.title }}{% endif %}" /> 
{% endspaceless %} 

我得到錯誤:

Exception Value:  
Caught an exception while rendering: Source file: '/media/uploads/DSC_0014.jpg' does not exist. 

我覺得縮略圖需要絕對路徑,所以試圖把它放在模板中,並且工作。

即這個工程:

{% thumbnail '/Users/me/media/uploads/DSC_0014.jpg' 200x50 %} 

所以基本上我需要生成該文件的絕對路徑給出相對路徑(到網站根目錄)。你可以通過將MEDIA_ROOT設置傳遞給模板來做到這一點,但我想要做模板標記的原因是以編程方式設置圖像大小。

更新 試圖以此爲每答案如下:

templatetag:

from django import template 
from proj.settings import MEDIA_ROOT 

register = template.Library() 

@register.filter(name='path') 
def path(value): 
    value = MEDIA_ROOT + '/' + value 
    return value 

模板:

{% load thumbnail %} 
{% load images %} 
{% spaceless %} 
<img src="{{ upload.upload.url|path }}" width="{{ upload.width }}" height="{{ upload.height }}" class="{{ options.class }}" class="{{ options.size }}" alt="{% if options.alt %}{{ options.alt }}{% else %}{{ upload.title }}{% endif %}" /> 
{% endspaceless %} 

回答

0

SORL需要一個文件系統位置,因爲它是一個服務端程序。假設您的文件系統地址鏡像您的網址,您應該能夠創建一個custom filter來轉換文件位置。

UPDATE

我建議是這樣的:

{% thumbnail upload.upload.url|path 200x50 %} 
+0

如何將這項工作?由於縮略圖也是一個標籤,你是否可以有兩個標籤,即{%thumbnail filter%} – ismail 2010-04-18 22:47:50

+0

嗨剛剛測試過這個,它的工作原理。但是,問題在於你要在服務器上插入一個img src =絕對路徑。看起來不正確。將更新與我有什麼問題。 – ismail 2010-04-18 22:58:22

+0

嗨,謝謝,但正如注意到它插入絕對URL(在服務器上)在IMG SRC – ismail 2010-04-19 14:24:42