私の Django アプリは Heroku にデプロイされており、開発には Postgres と MySQL を使用しています。ユーザーに(手動で)ログインさせることができず、次のエラーが発生します。
DatabaseError at /login/
current transaction is aborted, commands ignored until end of transaction block
コードを調べたところ、問題はdjango.contrib.auth.authenticate
ここに私のビューのコードがあります:
if request.method == 'POST':
username = request.POST.get('username')
print username
password = 'none'
try:
user = User.objects.create_user(username, 'none', password)
user.save()
print user
fb_user_id = request.POST.get('fb_user_id')
print fb_user_id
full_name = request.POST.get('full_name')
print full_name
hostname = request.get_host()
invite_link = hostname + '/referal/'+str(short_url.encode_url(int(fb_user_id)))
print invite_link
# Create a UserProfile object that references user.
profile = UserProfile(
user = user,
fb_user_id = fb_user_id,
username = username,
full_name = full_name,
invite_link = invite_link
)
profile.save()
print profile
settings = Setting(user=profile)
settings.save()
print settings
print "success"
return HttpResponse('success')
except:
print "error"
# Authenticate the user
user = authenticate(username=username,password='none')
print user
if user is not None:
print "user is not None: ", user
if user.is_active:
print "loggin user in "
login(request, user)
return HttpResponseRedirect('/')
else:
print user,
print "user is none"
else:
return HttpResponse('not a post ')
return HttpResponse('fail')
登録ユーザーでログインしようとすると、ログに最後に表示されるのは、except
ブロックに出力される「エラー」です。開発環境では、すべてが期待どおりに動作します! 以前にこの問題に遭遇した人はいますか?
編集 実際には、管理パネルを介した認証は問題なく機能し、ユーザーの登録も完全に機能します。