2011-04-03 4 views
0

何らかの理由で、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を実行しています(私の制御の理由から...)。

これを修正する方法についてのご意見はありますか?

+0

あなたは#django IRCでこれについて数日前に尋ねていたのですか?そうでない場合は、唯一ではないように#django IRCを試してください。私は議論の最終結果を見るためにハングアップしませんでしたが、少なくともデータベースに格納され、問題が発生したモデルやテンプレートのレンダリングにあったと判断されました。 –

+0

はい、それはIRCの私でした。残念ながら、私はまだ問題を解決していません。 – jcady

+0

この問題はテンプレートのエスケープに関連していないように見えるので、 '| safe'や' {%autoescape off%} {%autoescape end%} 'を使用してもシェルで見られる問題は解決しません。 – Max

答えて

0

私が言うことができる限り、これはAmazon S3がフォルダを持っていないためです。何らかの理由でdjango-store appがこのようにURLを出力します。私はそれが間違っていると思ったが、イメージは機能している。そのようなURLを見るにはちょっと変わった。

関連する問題