为什么Django显示照片URL的转义字符串?

时间:2011-04-03 02:29:21

标签: python mysql django

出于某种原因,Django似乎正在显示我的ImageField URL字符串转义。请参阅下文(ImageWithThumbsFieldFile在幕后使用ImageField,我也使用普通的ImageField进行了测试,问题仍然存在。)

>>> 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是默认值)。

我尝试使用

进行转义
|safe 

{% autoescape off %} {% autoescape end %}

无济于事。我的设置是Django 1.2.3,MySQL在Apache mod_wsgi下运行。该应用程序在我的登台服务器上运行,在相同的设置下没有问题(也是Apache和MySQL)。但是由于转义出现在Python shell中,我不相信数据库或服务器是根本原因。好的服务器正在运行Python 2.7,坏的服务器正在运行Python 2.6.6(出于我无法控制的原因......虽然我怀疑这也是问题所在。)

有关如何解决此问题的任何想法?

1 个答案:

答案 0 :(得分:0)

据我所知,这是因为Amazon S3没有文件夹。出于某种原因,django-storages app以这种方式输出url。我认为这是错误的,但图像正在运行。看到这样的网址真是太奇怪了。