2

このビュー関数:

@login_required 
def dashboard(request):
    from myproject.myapp.models import UserProfile
    k = UserProfile.objects.get( user=request.user.pk ).known

    return render_to_response('dashboard.html', {'KNOWN': k, , context_instance=RequestContext(request))

このテンプレートに渡します:

{% if user.is_authenticated %}
    {{ user.username }}
{% else %}
    Login link
{% endif %}
    {{ KNOWN }}
  1. すでにログインしています。
  2. ページは LOGIN_URL にリダイレクトされません (したがって、@login_required はログインしていると見なします)
  3. {{ KNOWN }} は完全に正常にレンダリングされます
  4. {{ user.username }} が表示されない

これはどのように可能ですか?確かにlogin_requiredが機能し、KNOWNを取得できた場合、ユーザーはどこかに存在する必要がありますか?
どうすればこれをデバッグできますか?

:-)


更新:私が削除した場合:

TEMPLATE_CONTEXT_PROCESSORS = ('django.core.context_processors.request',)

設定から、それは動作します。
ただし、それを削除すると、テンプレートで {{ request.get_full_path }} を使用する他のページが読み込まれなくなります。
イーク。


更新 2:

TEMPLATE_CONTEXT_PROCESSORS = (
"django.contrib.auth.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"django.core.context_processors.static",
"django.core.context_processors.request",)

リクエスト行を単独で追加すると、デフォルトである他のすべてが無効になります。ドー!


更新 3: 残念ながらまだ機能していません。


更新 4: 他の場所でタイプミスを発見し、Mark Lavin の回答がそれを修正したことを確認できます:)

4

2 に答える 2

3

設定している場合は、特にコンテキストに追加さTEMPLATE_CONTEXT_PROCESSORS = ('django.core.context_processors.request',)れるデフォルトのコンテキスト プロセッサをすべて削除しています。代わりに使用する必要がありますdjango.contrib.auth.context_processors.authuser

TEMPLATE_CONTEXT_PROCESSORS = (
    "django.contrib.auth.context_processors.auth",
    "django.core.context_processors.debug",
    "django.core.context_processors.i18n",
    "django.core.context_processors.media",
    "django.core.context_processors.static",
    "django.contrib.messages.context_processors.messages",
    "django.core.context_processors.request",
)
于 2012-03-01T17:11:22.223 に答える
1

django.core.context_processors.request を保持する必要があります。これにより、テンプレートで {{ request }} を使用できるようになります。

request オブジェクトには、ページをリクエストしているユーザーに対応するユーザー プロパティがあります。

これを試してみてください。あなたにもうまくいくはずです:

{% if request.user.is_authenticated %}
    you're authenticated as {{ request.user.username }}
{% else %}
    i'm a guest
{% endif %}
于 2012-03-01T17:02:40.460 に答える