首页 > 解决方案 > Django:在超链接中使用图像

问题描述

我对 Django 很陌生(到目前为止还没有任何知识),一个项目要求我在超链接中包含一个图像。仅包括超链接的内部创建了错误消息

'blocktrans' doesn't allow other block tags (seen "static 'pretix_app/Instagram.png'") inside it

到目前为止我的代码是

li ><img src="{% static 'pretix_app/YouTube.png' %}" alt="Youtube_icon" style="alignment: left;vertical-align:middle; width: 20px; padding-right: 5px"    >
             {% with 'target="blank" href="https://www.youtube.com"'|safe as a_attr %}
                {% blocktrans trimmed %}   <a {{ a_attr }}>    Social Media-target   {% endblocktrans %}
                {% endwith %}</li>

这会产生一个工作超链接,但不包括图像(作为社交媒体超链接所必需的)“安全作为 attr”方法是从源代码中包含的工作模板复制而来的。

有谁知道是否可以在超链接中包含图像,如果可以,如何?

提前感谢您的帮助

标签: htmldjangoimage

解决方案


你好 Corinari,欢迎来到 StackOverflow。

正如 Django 日志所说,blocktrans(应该是blocktranslate自 Django 3.1 ref起)可能不包含其他标签,在本例中是该{% static 'pretix_app/YouTube.png' %}部分。我们需要删除那部分。

一种可能的方法是使用as语句。您可以将static标签放在blocktrans块之外并通过变量,如下所示:

{% static 'pretix_app/YouTube.png' as yt_icon %}
{% blocktrans %}
    <li>
        <img src="{{ yt_icon }}" alt="Youtube_icon" style="alignment: left;vertical-align:middle; width: 20px; padding-right: 5px"/>
        ...
    </li>
{% endblocktrans %}

这将修复您当前的错误。然而,我还有一些进一步的说明。首先是静态路径中可能的错字pretix_app。另一个更重要的是,正如 Abdul 在他的评论中所说,您将在第二个blocktrans块中遇到另一个错误。据我所知,从您在此处发布的内容中,您不需要第二个blocktrans嵌套在第一个中。您将能够将整件事翻译成一个整体。


推荐阅读