私はDjangoで新しく、他のファイルからvaribleにアクセスしようとしています。しかし、私は彼の価値を得ることはできません。私はDJangoの認証システムを使用せず、私はIDPにログインし、IDPはtokenId、uidといくつかのデータを返送します。Pythonでインポートされたvar/Djangoが空です
.........
tokenId = ''
.........
def validateToken(tokenId):
...............
returns True or False
def login(request):
.............
global tokenId
tokenId = value/returned/from/server
return HttpResponseRedirect('/loggedin')
そして、それがリダイレクトだユーザーは、コードがfileB.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.pyオン
空ですが、fileAのtokenIdには値が割り当てられており、ログアウトや作業に使用できます。
def validateToken(): #I don't pass the var because it's global on fileA
.........
returns True or False
とFILEBに私は:
私はFILEAにチェックを実行しようとしました...それが値を持たない他のファイルからのTokenIdを呼び出すときに、なぜだから私は理解していません
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'定義されていません。
しかし、それは定義されています! :/
私は間違っていますか?ありがとうございました。
あなたはこの作業を取得できたとしても、あなたが** **はなりません。モジュールレベルの変数はすべてのリクエストで共有されるため、 'token_id'は他のユーザに見えるようになります。これをしないでください。 –
そのトークンが有効であること(ユーザーがログインしたこと)を確認し、保護されたコンテンツを表示するにはどうすればよいですか? – Aker666
リクエスト間で物事を永続化する必要がある場合は、それらをどこかに格納する必要があります。おそらくここで最高の場所はセッションでしょう。 –