我是Django的新手,我正在尝试从其他文件访问varible。但我没有得到他的价值。我没有使用DJango auth系统,我登录到IDP并且IDP发送回tokenId,uid以及更多数据。
在fileA.py上我有:
from fileA import validateToken, tokenId
.........
def menu(request):
if validateToken(tokenId):
return render_to_response('menu/menu.html')
else:
return render_to_response('menu/access_error.html')
当用户重定向时,代码转到fileB.py:
def validateToken(): #I don't pass the var because it's global on fileA
.........
returns True or False
如果我进行调试,我发现tokenId它是空的......但是在fileA中,tokenId已经分配了它的值,我可以使用它来进行注销并运行。所以我不明白为什么当我从其他文件调用tokenId时它没有任何价值......
我试图检查fileA:
from fileA import validateToken
.........
def menu(request):
if validateToken():
return render_to_response('menu/menu.html')
else:
return render_to_response('menu/access_error.html')
在fileB上我做:
/dev/fd
但是它给出了一个错误:[NameError]名称'tokenId'它没有被定义。
但它是定义的! :/
我做错了什么?谢谢和问候。
答案 0 :(得分:0)
感谢Daniel Roseman给我提示使用会话。我已经解决了我的问题。
在fileA上我添加了:
def login(request):
...........
global tokenId <-------- deteled
tokenId = value/returned/from/server
request.session['tokenId'] = tokenId <-------- added
return HttpResponseRedirect('/loggedin')
现在,在fileB上我放了验证函数:
def validateToken(request):
...................
request.session.get('tokenId') <---- when I need get the value
def menu(request):
if validateToken(request):
return render(request, 'menu/menu.html')
else:
return render_to_response('menu/access_error.html')