出于某种原因,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(出于我无法控制的原因......虽然我怀疑这也是问题所在。)
有关如何解决此问题的任何想法?
答案 0 :(得分:0)
据我所知,这是因为Amazon S3没有文件夹。出于某种原因,django-storages app以这种方式输出url。我认为这是错误的,但图像正在运行。看到这样的网址真是太奇怪了。