何らかの理由で、DjangoがエスケープしたImageField URL文字列を表示しているようです。 (ImageWithThumbsFieldFileは舞台裏のImageFieldを使用し、私は同様に通常のImageFieldでそれをテストし、問題がまだ存在していた。)は、以下を参照してくださいDjangoが写真のURLにエスケープ文字列を表示するのはなぜですか?
>>> 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を実行しています(私の制御の理由から...)。
これを修正する方法についてのご意見はありますか?
あなたは#django IRCでこれについて数日前に尋ねていたのですか?そうでない場合は、唯一ではないように#django IRCを試してください。私は議論の最終結果を見るためにハングアップしませんでしたが、少なくともデータベースに格納され、問題が発生したモデルやテンプレートのレンダリングにあったと判断されました。 –
はい、それはIRCの私でした。残念ながら、私はまだ問題を解決していません。 – jcady
この問題はテンプレートのエスケープに関連していないように見えるので、 '| safe'や' {%autoescape off%} {%autoescape end%} 'を使用してもシェルで見られる問題は解決しません。 – Max