【问题标题】:Django: using Images in HyperlinksDjango:在超链接中使用图像
【发布时间】:2021-07-02 11:01:03
【问题描述】:

我对 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>

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

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

提前感谢您的帮助

【问题讨论】:

  • 还有另一个blocktrans 模板标签,其中包含您在问题中提到的代码。这会导致问题,因为blocktrans 模板标签内不能有其他标签。请出示您模板的那部分。

标签: html django image


【解决方案1】:

你好 Corinari,欢迎来到 StackOverflow。

正如 Django 日志所说,blocktrans(应该是 blocktranslate,因为 Django 3.1 ref)可能不包含其他标签,在这种情况下是 {% static 'pretix_app/YouTube.png' %} 部分。我们需要删除那部分。

一种可能的方法是使用as 语句。您可以在 blocktrans 块之外添加 static 标记并传递变量,如下所示:

{% 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 嵌套在第一个中。您将能够将整个内容翻译为一体。

【讨论】:

  • 感谢您的帮助,我已经解决了。
  • @Corinari 很高兴为您提供帮助
猜你喜欢
  • 2011-08-09
  • 1970-01-01
  • 2018-04-02
  • 2017-02-07
  • 1970-01-01
  • 1970-01-01
  • 2019-07-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多