2012年06月04日

BlobstoreUploadHandler で謎に改行(CR)が追加される

GAE で BlobstoreUploadHandler を使ってファイルをアップロードしつつ、textarea に入力されたものを保存するというコードを書いていたのですが、謎に \r (CR) が追加されてしまうという事象が起こりました。
環境は、Mac OS X 10.6.5 + GAE 1.6.5 + python 2.6.1 です。

画像アップロード付記事投稿フォームのようなものを想像してください。
記事表示画面では、
{{article.content|linebreaksbr}}
という感じにしておいて、投稿記事の編集フォームでは、
<textarea name="content">{{article.content|safe}}</textarea>
な感じにしたのですが、表示画面の方では投稿時に改行を2つ入れていれば <br> が2つ表示されて望み通りの動作をしましたが、編集フォームでは改行が4つも表示されるという怪現象に悩まされました。

logging.error() などを使って調べてみたところ、BlobstoreUploadHandler 経由で controller が呼ばれたときに、\r\n が \r\r\n と変換されていました。
なぜ、こんなことが起こるのか意味不明ですが、とりあえず、
content = self.request.get('content').replace('\r\r\n', '\r\n');
というやっつけコードで逃げました。

https://groups.google.com/forum/#!topic/google-appengine-python/cuZrHz3mDZQ を見ると、
I have experienced this problem as well.  
In addition to the equal sign (=) a line-feed is also added. 
とのことで同じ現象にあった人もいるようです。
とりあえず、= が入るという現象にはまだ遭遇していませんが。
ラベル:GAE Mac
posted by おちエン at 10:01| Comment(0) | GAE | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

×

この広告は1年以上新しい記事の投稿がないブログに表示されております。