Django 在图像字段的模板中添加 %2f 代替 /

Posted

技术标签:

【中文标题】Django 在图像字段的模板中添加 %2f 代替 /【英文标题】:Django adds %2f in place of the / in the template for an image field 【发布时间】: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吗? 【参考方案1】:

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

 object.image.url|safe 

【讨论】:

以上是关于Django 在图像字段的模板中添加 %2f 代替 /的主要内容,如果未能解决你的问题,请参考以下文章

Django:在模板中呈现表单字段时添加 CSS 类

Django cloudinary 图像如何在模板 % % 标签中添加 onClick 事件?

如何将引导类添加到模板中的 Django CreateView 表单字段?

如何在Django模板中添加,乘以数字变量?

Django 模板:使用 get_FOO_display() 强制选择字段并打印显示值

渲染视图在模板中包含 django 位置字段