Django - 自定义包含模板标签MEDIA_URL?

问题描述:

我有以下的自定义包含标签: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

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

+0

哦,我觉得自己很愚蠢,我不知道为什么我不想这么做。谢谢! – Hanpan 2011-04-21 09:28:54

+1

由于标记不存在而得到'TemplateSyntaxError'时,请参阅user1653114的回答:http://*.com/a/12307683/400691 – meshy 2013-04-22 09:23:20

的get_media_prefix标签是静态的,对于我们这些是在寻找“装入的媒体” ......

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

或者,您可以忽略这些模板标签,并立即使用变量MEDIA_URL。可以从模板HTML访问settings.py中的所有变量。

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