PHP を置き去りにして、Python と Django で少し作業することを余儀なくされた後、ちょっとした問題にぶつかりました。
私がやろうとしているのは、Django に付属している組み込みのユーザー認証を使用することです。問題は、「login()」関数を使用しようとすると、ユーザーがセッションに保存されないか、保存する必要がある場所に保存されないことです。
私のコードは次のようになります。
@csrf_exempt
def dologin(request):
username = request.POST['username']
password = request.POST['password']
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(request, user)
# Redirect to a success page.
return render_to_response('bsys/profile.html', {'message': 'Success!', 'user': request.user.get_full_name()})
else:
# Return a 'disabled account' error message
return render_to_response('bsys/login.html', {'message': 'Disabled!'})
else:
# Return an 'invalid login' error message.
return render_to_response('bsys/login.html', {'message': 'Sumthin Wong!'})
だから問題は私が実行したときです:
request.user.get_full_name()
それは言います:
Exception Type: AttributeError
Exception Value: 'AnonymousUser' object has no attribute 'get_full_name'
したがって、どうやらそれはユーザーにログインしません。
私が同じことをするが、以下を使用するとき:
user.get_full_name()
それは機能し、認証機能も明らかにうまく機能します。したがって、login() には何かがあると思います。
私も試したのは、管理者として管理者ログインを介してログインし、別のビューから同じ request.user.get_full_name() を使用して、正常に動作することでした。
これを解決するためのアイデアはありますか?フレームワークの重要な部分を見逃しただけかもしれません。