目前有點卡住了,想知道是否有人可以協助。我正在使用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 %}
如何將這項工作?由於縮略圖也是一個標籤,你是否可以有兩個標籤,即{%thumbnail filter%} – ismail 2010-04-18 22:47:50
嗨剛剛測試過這個,它的工作原理。但是,問題在於你要在服務器上插入一個img src =絕對路徑。看起來不正確。將更新與我有什麼問題。 – ismail 2010-04-18 22:58:22
嗨,謝謝,但正如注意到它插入絕對URL(在服務器上)在IMG SRC – ismail 2010-04-19 14:24:42