2010年3月12日金曜日

Django:cookie を使うときは、render_to_response を使えないようだ

 render_to_response を使うと cookie を投げなくなった件、調べてみた。

 よく見るとコードが、
response = HttpResponse()
cookie = ...
response.set_cookie('search_key', cookie)
....
t = loader.get_template('x.html')
c = Context({'item_list':item,.....
response.write(t.render(c))
return response
 となっている。

 render_to_response は新たに HttpRespons を作るわけだから、cookie を渡せるわけがない。

 では、cookie を使ってコンテキストプロセッサ経由でテンプレートに値を渡したい場合は、
t = loader.get_template('x.html')
c = RequestContext({'item_list':item,.....
response.write(t.render(c))
return response
 と書いてやれば OK。

 つまらんことに時間を食ってしまったまたひとつ利口になった (^^;

 

0 件のコメント:

コメントを投稿