По какой-то причине, Django, кажется, отображает экранированные строки URL моего ImageField. См. Ниже ( 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'
Обратите внимание на выход в URL. Теперь, когда я запрашиваю базу данных 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 %}
безрезультатно. Моя установка - Django 1.2.3 с MySQL, работающим под Apache mod_wsgi. Приложение работает на моем промежуточном сервере под той же самой установкой без проблем (также Apache и MySQL). Но поскольку в оболочке Python экранированные символы отображаются, я не верю, что причиной является база данных или сервер. Хороший сервер работает под управлением Python 2.7, а плохой сервер работает под управлением Python 2.6.6 (по независящим от меня причинам ... хотя я сомневаюсь, что это тоже проблема).
Есть идеи, как это исправить?