【问题标题】:how to show SVG with Django objects?如何使用 Django 对象显示 SVG?
【发布时间】:2017-08-08 00:24:36
【问题描述】:

我在使用 Django 对象时遇到问题,每当我在模板上显示我的 svg 文件时,它都不会显示为图像而是标签。所以我的问题是如何通过模板显示 SVG 图像?

template.html

{% for icon in icons %}
     <svg version="1.0" xmlns="http://www.w3.org/2000/svg" width="100px" height="auto" viewBox="0 0 208.000000 300.000000" preserveAspectRatio="xMidYMid meet">
         {{ icon.icons }}
     </svg>
{% endfor %}

icon.icons 数据之一:

<g transform="translate(0.000000,300.000000) scale(0.100000,-0.100000)" fill="#161616" stroke="none">
<path class="node" id="node1" d="M1523 2911 c-30  ..."></path>
</g>
<g transform="translate(0.000000,300.000000) scale(0.100000,-0.100000)" fill="#FFFFFF" stroke="none">
</g>

我使用TextField 来包含这些数据。我认为数据是“字符串”,所以我想知道如何在我的网页上将其显示为 SVG?

【问题讨论】:

  • 更新了我的答案,因为我产生了您的问题并且能够准确理解您的意思。

标签: python django svg


【解决方案1】:

如何使用safe 模板过滤器,如下所示:

{{ icon.icons|safe }}

[更新]:我试过你的问题,确实TextField 是用双引号 ("&lt;g&gt;...&lt;/g&gt;") 呈现的。我试图剥离它们,但没有运气。然后我想,为什么不直接使用出色的django-ckeditor 包。如果是这样,那么您可以像这样声明您的“丰富”模型字段:

from ckeditor.fields import RichTextField

class MyIcon(models.Model):

    icon = RichTextField('Text', help_text='Now text will be stored as a rich text field!')

然后,在您的模板中呈现如下:

<!-- template.html -->

{% for icon in icons %}
    <svg version="1.0" xmlns="http://www.w3.org/2000/svg" width="100px" height="auto" viewBox="0 0 208.000000 300.000000" preserveAspectRatio="xMidYMid meet">
         {{ icon.icon|safe }}
     </svg>
{% endfor %}

【讨论】:

  • 我考虑过使用 Ckeditor,但我也在寻找一种没有它的方法 :) 我想我必须像这样使用它
  • 直到 Django 实现自己的富字段使用 ckeditor。很高兴我能帮上忙!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-14
  • 2016-10-20
  • 1970-01-01
  • 1970-01-01
  • 2012-03-11
  • 1970-01-01
  • 2011-08-03
相关资源
最近更新 更多