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

时间:2011-04-21 09:13:54

标签: django django-templates

我有以下自定义包含标记:

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,是否还有另外一组我应该加载的标签?

3 个答案:

答案 0 :(得分:12)

对于那些希望“加载媒体”的人来说,get_media_prefix标签是静态的...

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

答案 1 :(得分:5)

您可以使用tempatetag {% get_media_prefix %}

执行相同操作(与STATIC_URL一样)

答案 2 :(得分:0)

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

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