0

Django1.3にプロジェクトがあります。すべてのページにユーザー名を表示するために、base.htmlでそのようなタグを使用します

{% if user.is_authenticated %}
    <p>Welcome, {{ user.username }}.  
    <a href="/proc/accounts/logout/">loggout</a></p>
{% else %}
    <a href="/proc/accounts/login/">loggin</a>
{% endif %}

しかし、ビューから戻らない場合context_instance=RequestContext(request)、テンプレートのユーザーの値は空です。に'django.contrib.auth.context_processors.auth'含まれていTEMPLATE_CONTEXT_PROCESSORSます。

すべてのテンプレートにユーザーを自動的に含めることは可能ですか?

4

3 に答える 3

1

あなたは自分で答えを出しました。RequestContextを使用している限り、すべてのテンプレートに含まれます。

本当に多くの作業が必要な場合は、(1.3の新機能)TemplateResponseクラスを使用できます。

于 2011-05-04T12:37:03.590 に答える
1

django1.3以降。shortcuts.render関数を使用し、ビューを含むrequestcontextについて心配しないでください

于 2011-05-04T13:40:43.677 に答える
-1

または、単にコンテキストプロセッサを作成します。http://docs.djangoproject.com/en/dev/ref/templates/api/#writing-your-own-context-processorsを参照してください

これをcontext_processor.pyに入れてください

def root_categories(request):
    return {
        'user': request.user,
    }

settings.pyにコンテキストプロセッサを追加します。

テンプレートで試してみてください:{{user}}

于 2011-05-04T12:44:03.223 に答える