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

2024-09-27 00:17:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Django的新手,我正在尝试访问其他文件中的变量。但我不明白他的价值。我不使用DJango身份验证系统,我登录到一个IDP,IDP发送回tokenId、uid和更多的数据。你知道吗

在文件a.py我有:

.........
tokenId = ''
.........
def validateToken(tokenId):
      ...............
      returns True or False

def login(request):
     .............
     global tokenId
     tokenId = value/returned/from/server
     return HttpResponseRedirect('/loggedin')

当用户重定向它时,代码转到文件b.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')

如果我调试我发现tokenId是空的。。。但是在fileA中,tokenId分配了他的值,我可以用它来注销并工作。所以我不明白为什么当我从其他文件调用tokenId时它没有值。。。你知道吗

我试着检查文件:

def validateToken(): #I don't pass the var because it's global on fileA
    .........
    returns True or False

在文件B上我有:

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

但是它给出了一个错误:[NameError]name'tokenId',它没有定义。你知道吗

但它是有定义的!:/

我做错了什么?谢谢和问候。你知道吗


Tags: 文件tofrompyreturnresponserequestdef
1条回答
网友
1楼 · 发布于 2024-09-27 00:17:54

感谢Daniel Roseman给了我使用会话的提示。我已经解决了我的问题。你知道吗

我在文件上加了:

def login(request):
   ...........
   global tokenId  <     deteled
   tokenId = value/returned/from/server
   request.session['tokenId'] = tokenId    <     added
   return HttpResponseRedirect('/loggedin')

现在,在fileB中,我使用了validate函数:

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

相关问题 更多 >

    热门问题