0

djangoでログインフォームを作成しています。アプリを実行していて、ユーザー名とパスワードのフィールドに入力したとき。ページは常に1つの条件にリダイレクトされます(ユーザー名が正しいかどうかは関係ありません)。

コードは次のとおりです。

def home(request):

   if request.method == 'POST':
      username = request.POST.get('user_name')
      password = request.POST.get('password')
      user = authenticate(user_name=username, password=password)
      if user is not None:
        if user.is_active:
           login(request, user)
        # success
           return render_to_response('registration/main_page.html',{'form':login},context_instance=RequestContext(request))
        else:
         #user was not active
           return render_to_response('registration/q.html')
      else:
        # not a valid user
           return render_to_response('registration/home.html')

   else:
       # URL was accessed directly
           return render_to_response('registration/w.html')

常にhome.htmlにリダイレクトされます

else:
             #user was not active
              return render_to_response('registration/home.html')

なぜそれが起こるのですか?

4

2 に答える 2

2

authenticate()関数はかかりusernameませんuser_name

これを試して:user = authenticate(username=username, password=password)

また、あなたの代わりにif user is not None:書くことができますif user :

于 2012-08-29T11:32:08.707 に答える
0

あなたの関数はここでNoneオブジェクトを返すようです:

if user is not None

印刷ステートメントを追加して、それを固定することができます。

if request.method == 'POST':
      username = request.POST.get('user_name')
      password = request.POST.get('password')

      print username # what does it return?

      user = authenticate(user_name=username, password=password)

      print user # what does it return?

      if user is not None:
          #...
于 2012-08-29T11:32:05.153 に答える