【问题标题】:Django adds %2f in place of the / in the template for an image fieldDjango 在图像字段的模板中添加 %2f 代替 /
【发布时间】:2011-07-16 03:48:00
【问题描述】:

我在使用 mimetype="text/plain" 的 django 模板时遇到了一些问题。

首先,url 的 s3 部分以 :80 结尾,然后实际的图像 url 以 '%2f' 代替每个斜杠。

object.image.url

我已尝试使用安全标签和其他自定义标签来替换“%2f”,但它不起作用

#what I have
http://blahblah.s3.amazonaws.com:80/navigation%2Fprimary%2Fimage.jpg

#what I want
http://blahblah.s3.amazonaws.com/navigation/primary/image.jpg

我尝试过的自定义标签是:

import re 
from django import template

register = template.Library()

def reslash (value): 
    return value.replace('%2f', '/')


register.filter('reslash', reslash)

这样使用:

{{ object.image.url|reslash }}

但它不起作用。谢谢

【问题讨论】:

  • 这个网址是从哪里来的?你是如何在模板中输出的?
  • {{ object.image.url|safe }} 应该不加修改地输出 URL - 请参阅 docs.djangoproject.com/en/dev/ref/templates/builtins/…
  • @Daniel Roseman 网址来自导航对象循环,每个导航对象都有一个图像字段,保存时上传到 s3。因此,我可以轻松地循环并输出标题,但由于某些原因,使用 |safe 它仍然可以执行相同的操作。可能是因为我正在输出到 text/css 或 text/plan。
  • 你试过unquote吗?

标签: django django-templates


【解决方案1】:

Django 自动 html 转义模板中的所有变量。为了在不转义的情况下插入变量的值,您应该使用safe 过滤器来告诉 django 该值不需要像这样自动转义:

{{ object.image.url|safe }}

【讨论】:

    猜你喜欢
    • 2021-12-18
    • 2017-08-18
    • 2022-01-25
    • 1970-01-01
    • 2014-11-12
    • 2021-03-05
    • 1970-01-01
    • 2023-02-17
    • 1970-01-01
    相关资源
    最近更新 更多