【问题标题】:Open link contents in django template在 django 模板中打开链接内容
【发布时间】:2015-10-17 11:15:30
【问题描述】:

我有一个 django 应用程序,在其中一个模板中我有类似的东西:

<a href="/location/images/{{memb.EntryNr}}/">image</a>

此代码被多次调用 - 每个memb 都有一个关联的.svg 图像,可通过此网址访问。当然,目前,“图像”一词上只有一个链接,指向带有 .svg 的单独页面。

我想要的是将.svg 加载到模板页面而不是链接。最简单/最好的方法是什么?

我对 Python/Django 比较陌生,但我了解基本概念以及 HTML/CSS,但是,我对 JavaScript 的经验为零

编辑: .svg 没有存储在文件系统中。有一个单独的视图(与我正在处理的模板的主视图分开)有点像这样:

def svg_image(request, entry_nr):
    svg_string = utils.DrawSVG.get_svg(entry_nr)
    return HttpResponse(svg_string)

然后我就有了 url,它可以在上面的 HTML 模板代码中访问:

url(r'^images/(?P<entry_nr>[0-9]+)/$', views.svg_image, name='svg_image')

【问题讨论】:

  • 这和JS无关。可能您正在寻找SVG in IMG

标签: javascript python html django svg


【解决方案1】:
{% load static %}
<p>
    <img src="/location/images/{{memb.EntryNr}}" width="200"/>
</p>

在渲染 django 模板时你需要传递 content_type

def myview(request):
    svg_data = generate_some_svg_data()
    return HttpResponse(svg_data, content_type="image/svg+xml")

【讨论】:

  • 感谢您的回答,这让我意识到我遗漏了一些重要信息,请参阅编辑。如果我对.svg 有单独的视图,应该如何修改这种方法?
  • @edc505 根本不可能。这里的答案关于生成 SVG 的单独视图。
  • @DanielRoseman 好的,太好了。现在的问题是,如果我尝试访问 svg 图片 url,就会出现 TypeError: __init__() got an unexpected keyword argument 'mimetype'
  • 实际上,如果我使用 content_type 而不是 mimetype 这似乎可行:github.com/caffeinehit/django-oauth2-provider/pull/84
猜你喜欢
  • 2016-06-14
  • 1970-01-01
  • 1970-01-01
  • 2018-09-04
  • 2019-10-24
  • 2011-06-28
  • 1970-01-01
  • 2020-01-07
  • 1970-01-01
相关资源
最近更新 更多