在python / Django上导入var它是空的

时间:2016-05-31 16:50:36

标签: python django import

我是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'它没有被定义。

但它是定义的! :/

我做错了什么?谢谢和问候。

1 个答案:

答案 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')