【问题标题】:Django - Custom inclusion template tag MEDIA_URL?Django - 自定义包含模板标签 MEDIA_URL?
【发布时间】:2011-08-10 03:55:01
【问题描述】:

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

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,我应该加载另一组标签吗?

【问题讨论】:

  • 正如您链接的线程的第一个答案中所述:为什么不在模板标记代码中导入 MEDIA_URL 并将其传递给模板?

标签: django django-templates


【解决方案1】:

对于我们这些想要“加载媒体”的人来说,get_media_prefix 标签是静态的...

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

【讨论】:

    【解决方案2】:

    您可以使用 tempatetag {% get_media_prefix %} 执行相同的操作(与 STATIC_URL 一样)

    【讨论】:

    • 哦,天哪,我觉得自己很愚蠢,我不知道为什么我没想过要尝试。谢谢!
    • 当你因为标签不存在而得到TemplateSyntaxError时,查看user1653114的回答:stackoverflow.com/a/12307683/400691
    【解决方案3】:

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

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

    【讨论】:

    • 这正是 NOT 为提问者工作的,因此首先是问题。
    猜你喜欢
    • 2011-01-23
    • 1970-01-01
    • 1970-01-01
    • 2021-07-13
    • 2012-12-22
    • 2015-01-20
    • 2012-03-15
    • 1970-01-01
    相关资源
    最近更新 更多