いま、 Twitter アカウントで認証をしているのですが、そのアカウントで使用してる言語で
表示する為に、ミドルウェアを作ることにしました。
思い通りに出来たのですが、一点だけどうしてもアイデアが浮かばない所があります。
============================================================
from kay.conf import settings
class AuthLanguage(object):
def __init__(self):
pass
def process_response(self, request, response):
'''try:
if response.mimetype != 'text/html':
return response
except AttributeError:
return response'''
try:
if request.user.is_anonymous():
response.delete_cookie(settings.LANG_COOKIE_NAME)
return response
except AttributeError:
return response
cookie = request.cookies.get(settings.LANG_COOKIE_NAME)
lang = request.user.raw_user_data['lang'] # for Twitter
if not cookie or cookie != lang:
response.set_cookie(settings.LANG_COOKIE_NAME, lang,
max_age=settings.LANG_COOKIE_AGE)
return response
============================================================
コメントしている部分です。
Ajax などで、非同期通信して結果とメッセージを取得しているアプリだと
ログインしている状態で、 Twitter の使用言語を変更すると、その言語で
メッセージを返してしまいます。
あと、この process_response は一回だけ呼ばれるわけでは無いので、
それにも対応したいと思っています。
例外処理になっているのは、response オブジェクトと request オブジェクトに
必ず、参照したいオブジェクトがあるとは限らない為にやってます。
よいアイデアはありませんでしょうか?
p.s.
クラスの名前も気に入らなかったりします(^^;)