2011-04-21 74 views
7

我有以下的自定義包含標籤:Django - 自定義包含模板標籤MEDIA_URL?

from django.template import Library 
from django.db.models import Count 

register = Library() 

@register.inclusion_tag('projects/work_part.html', takes_context=True) 
def project_list(context): 
    return {'projects':context['projects']} 

我的設置是這樣的:

TEMPLATE_CONTEXT_PROCESSORS = (
    'django.contrib.auth.context_processors.auth', 
    'django.core.context_processors.debug', 
    'django.core.context_processors.i18n', 
    'django.core.context_processors.media', 
    'context_processors.default_processors', 
    ) 

我需要在work_path.html模板內訪問MEDIA_URL但似乎不適用的情況,處理器自定義模板。

如何在我的模板標籤中訪問MEDIA_URL?我看到這個帖子:Access STATIC_URL from within a custom inclusion template tag但我沒有使用STATIC_URL,是否有另一組我應該加載的標籤?

+0

正如第一個對您所鏈接的主題的回答所述:爲什麼不在您的模板標記代碼中導入MEDIA_URL並將其傳遞給模板? – arie 2011-04-21 09:24:41

回答

4

你可以做同樣的(如STATIC_URL)使用tempatetag {% get_media_prefix %}

+0

哦,我覺得自己很愚蠢,我不知道爲什麼我不想這麼做。謝謝! – Hanpan 2011-04-21 09:28:54

+1

由於標記不存在而得到'TemplateSyntaxError'時,請參閱user1653114的回答:http://stackoverflow.com/a/12307683/400691 – meshy 2013-04-22 09:23:20

12

的get_media_prefix標籤是靜態的,對於我們這些是在尋找「裝入的媒體」 ......

{% load static %} 
... 
<img class="img" src="{% get_media_prefix %}{{ obj.image }}" alt="{{ obj.name }}" /> 
0

或者,您可以忽略這些模板標籤,並立即使用變量MEDIA_URL。可以從模板HTML訪問settings.py中的所有變量。

<img class="img" src="{{ MEDIA_URL }}{{ obj.image }}" alt="{{ obj.name }}" />