0

リダイレクト後にテンプレート内のセッションからデータを取得するにはどうすればよいですか?実際には可能ですか?

これが私のコードです:

View.py:

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['emp_details'] = employee_details
    return HttpResponseRedirect('/home/')
except Employee.DoesNotExist:
    state = "Username or password incorrect !"
    return render_to_response('login.html',
        {'username' : username1,'state' : state},
        context_instance = RequestContext(request))

テンプレート: home.html

<body>
<p>
<ul>
    <li><a href="">{{request.session.emp_details.emp_name}}</a></li>
</ul>
</p>
<p><a href="/logout/"><button>logout</button></a></p>
</body>

ありがとう

4

1 に答える 1

5

テンプレートの context processorに django.core.context_processors.request を追加したことを確認してください。その後、コードで行うのと同じように、セッション変数にアクセスできます。

ビューに次の行を追加する必要がある場合があります

request.session.modified = True

これは、設定にあるかどうかによって異なりSESSION_SAVE_EVERY_REQUEST = Trueます。セッションを保存するためのドキュメントをご覧ください。

最後に、RequestContextオブジェクトをrender_to_responseのビューの関数に渡していることを確認してください'/home/'。はテンプレート コンテキストRequestContextにオブジェクトを含めrequestます (テンプレートで を使用してアクセスできるようにします{{ request }})。

警告

これはセッションを機能させるのに役立つはずですが、ダニエルに同意する必要がありますが、このようなユーザー認証を行うべきではありません。django 独自の認証を使用します。

于 2013-01-22T09:12:21.883 に答える