私は賢く、セッション変数を呼び出すラッパーを作成し(多くが存在します)、それをセッション変数を必要とする(django)ビューに追加すると思いました。しかし、私は変数のスコープを理解していないか、これを間違って書いているようです。
私が持っているラッパーは次のとおりです。
def s_vars(func_to_decorate):
@wraps(func_to_decorate)
def wrapper(request, *args, **kwargs):
#add all the session variables to kwargs and accessible for the decorated function.
user_obj = request.user
datepicker = request.session['datepicker']
date_format = request.session['date_format']
.........
country = request.session['country']
metric = request.session['metric']
qrydtm = request.session.get("qrydtm",date.today())
result = func_to_decorate(request, *args, **kwargs)
#any post view checks to be done go here
#return to the function to be decorated.
return result
return wrapper
ビューについては、次のようなものがあります。
@s_vars
def main(request, template_name='placeholder.html'):
return render_to_response(template_name, RequestContext(request,{
'user':user_obj
}))
しかし、これはメソッド「main」内で user_obj にアクセスできないというエラーにつながります。私の理解では、これは内部関数であるため、「ラッパー」メソッドの下のリスト内の変数は、この内部関数「メイン」からアクセスできます。ここで何が欠けていますか?