为什么Django为照片网址显示转义字符串?
问题描述:
出于某种原因,Django似乎显示我的ImageField URL字符串转义。见下文(ImageWithThumbsFieldFile使用幕后的ImageField的,我有一个正常的ImageField测试它以及和问题依然存在。)为什么Django为照片网址显示转义字符串?
>>> from … import UserProfile
>>> u = UserProfile.objects.get(pk=1)
>>> u
<UserProfile: johnny's profile>
>>> u.profile_picture
<ImageWithThumbsFieldFile: /static/img/profile_picture.png>
>>> u.profile_picture.url
'http://mysite.com/%2Fstatic%2Fimg%2Fprofile_picture.png'
注意到网址中逸出。现在,当我查询MySQL数据库时:
mysql> select * from ..._userprofile;
+----+---------+---------------------------------+------+
| id | user_id | profile_picture | bio |
+----+---------+---------------------------------+------+
| 1 | 1 | /static/img/profile_picture.png | NULL |
| 2 | 2 | /static/img/profile_picture.png | |
url不是这样存储的。所以,我不相信问题是存储在数据库中的数据(url是默认值)。
我试图与
|safe
和
{% autoescape off %} {% autoescape end %}
逃避无济于事。我的设置是在Apache mod_wsgi下运行MySQL的Django 1.2.3。该应用程序在相同的设置下运行在我的登台服务器上,没有问题(也包括Apache和MySQL)。但是由于转义出现在Python shell中,我不认为数据库或服务器是根本原因。好的服务器运行的是Python 2.7,而糟糕的服务器运行的是Python 2.6.6(出于我无法控制的原因......尽管我怀疑这也是问题)。
有关如何解决此问题的任何想法?
答
据我所知,这是由于Amazon S3没有文件夹。出于某种原因,django-storages应用程序以这种方式输出网址。我认为这是错误的,但图像正在工作。看到这样的网站很奇怪。
几天前您在#django IRC上询问过这个问题吗?如果没有,那么尝试#django IRC,看起来你不是唯一的一个。我并没有徘徊在最后的讨论结果,但至少确定存储在数据库中,并在模型或模板渲染中发生问题。 – 2011-04-03 04:08:48
是的,那是我在IRC。不幸的是,我仍然没有解决这个问题。 – jcady 2011-04-03 04:22:43
该问题似乎与模板转义无关,所以使用'| safe'或'{%autoescape off%} {%autoescape end%}''不会解决您在shell中看到的问题。 – Max 2011-04-03 17:33:17