リクエストをスレッドコンテキストに保持するdjangoのミドルウェアを定義しようとすると、奇妙な変数ドメインの問題に直面します。ビュー ファイルの API からメソッド「get」にアクセスしようとすると、最初のコード セクションでエラーが発生します。2 番目のコード例はうまく機能します。どうして???
例 1 (機能しません):
class ContextHandler(object):
#_LOCALS = threading.local()
def process_request(self, request):
self._LOCALS = threading.local()
self._LOCALS.x = "alon"
return None
例 2 (動作):
class ContextHandler(object):
_LOCALS = threading.local()
def process_request(self, request):
self._LOCALS.x = "alon"
return None
一般的な取得方法:
@classmethod
def get(cls):
return getattr(cls._LOCALS, 'x', None)
ありがとう!