`context_instance = requestcontext(request)` djangoでクッキーを使用しますか
-
08-10-2019 - |
質問
ホームページビューを変更するとき:
def home(request):
return render_to_response('homepage.html')
に
def home(request):
return render_to_response('homepage.html',context_instance=RequestContext(request))
user
Webブラウザ(Firefox)を閉じた場合でも、誰が私のサイトをログインします
どうして context_instance=RequestContext(request)
これを行うことができますか?クッキーを使用していますか?
この状態を維持するのはどれくらいですか。
ありがとう
homepage.htmlは次のとおりです。
{% if user.is_authenticated %}
<p>Welcome, {{ user.username }}. Thanks for logging in.</p>
{% else %}
<p>Welcome, new user. Please <a href="/account/login_view">login</a></p>
{% endif %}
解決
RequestContextを追加しても、ユーザーのログイン状態はまったく変更されません。そして、Cookieについてのあなたの質問はまったく意味がありません。 RequestContextが行うことは、特定の変数をテンプレートコンテキストでアクセスできるようにすることです。 auth
コンテキストプロセッサが有効になっています user
変数。
RequestContextがなければ、ユーザーはまだログインしていますが、 user
コンテキストに変数、だからあなた if
ステートメントはfalseに評価されます。ユーザーの実際のステータスとは何の関係もありません。
他のヒント
追加する場合 context_instance=RequestContext(request)
からのコンテキスト コンテキストプロセッサ あなたはあなたの中で定義しました settings.py
テンプレートに追加されます、あなたの場合、これには現在のユーザーオブジェクトが含まれます user
。削除すると、変数は存在しませんが、テンプレートの内部には例外が生まれませんが、ユーザーにログされていないHTMLがレンダリングされます!
ユーザー情報はaに保存されます セッション, 、クッキーを使用します。