0

djangoフレームワークは初めてで、管理者ログイン以外の別のログインフォームを作成しようとしています.ユーザー名とパスワードを使用してユーザーを認証し、データベースからそのユーザーの詳細を取得し、そのデータをテンプレート(ホームページ)に渡す必要があります表示します。

私のコードは次のとおりです: -

view.py:-

def login_user(request):
user = ''
passw = ''
username1 = ''

if request.POST:
    user = request.POST.get('username')
    passw = request.POST.get('password')
    #password1 = ''
    try:
        userdata = Employee.objects.get(username = user, password = passw)
        user_id = request.session["user_id"] = userdata.id
        employee_details = Employee.objects.get(id=user_id)
        request.session['user_id'] = employee_details.id
        return HttpResponseRedirect('/home/', kwargs={'user_id': employee_details.id}))
    except Employee.DoesNotExist:
        state = "Username or password incorrect !"
        return render_to_response('login.html',
            {'username' : username1,'state' : state},
            context_instance = RequestContext(request))
else:
    state = "Please login here:"
    return render_to_response('login.html' , {'state' : state} ,
         context_instance = RequestContext(request))

kwargs={'user_id': employee_details.id} を使用してみましたが、動作していません。リダイレクト後にホームページにデータを渡すにはどうすればよいですか?

ありがとう

4

2 に答える 2

0

POSTリクエストを使用してユーザーをリダイレクトすることはできません。GET代わりにパラメーターを使用してください。

あなたの場合、要求されたデータはすでにセッションに保存されています。次のリクエストでセッションから読み取るようにしてください。Djangocontrib.authuser.is_authenticatedメソッドを使用してジョブを実行します。

于 2013-01-21T10:30:36.343 に答える
0

kwargs={'user_id': employee_details.id} を使用してみましたが、動作していません。リダイレクト後にホームページにデータを渡すにはどうすればよいですか?

あなたはできる:

  1. セッション変数を使用する
  2. 「get」変数を使用します ( のように URL にエンコードされた変数を渡します。 urllib.urlencode'/home/?a=1&b=2'を参照してください)

ただし、標準の Django ユーザー関連の関数とメソッドを使用する必要があります。「ユーザーのログイン方法」を参照してください。TLDR:

  1. 資格情報を確認します。user = authenticate(username=username, password=password)
  2. ユーザーがNoneではないかどうか、および必要なその他のテストをテストします(彼はアクティブであるか、何らかの特権を持っているかなど)
  3. request.user を認証済みとしてマークします。login(request, user)
于 2013-01-21T10:31:49.027 に答える