2

GAE / Django-nonrel を使用して簡単なアプリを作成します (問題は GAE または nonrel フォークに固有のものではないと思います。ほとんどの場合、python/django noob として PEBKAC が発生し、基本的な django インストールで発生します)。

認証に django.contrib.auth を使用しています。

settings.py で

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware', )

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

manage.py でスーパーユーザーを作成しました

{% extends 'base.html' %} によって他のテンプレートで使用されている base.html のテンプレートを以下に示します。

{% if user.is_authenticated %} 
    Hello {{ user.username }} 
    [<a href="{% url django.contrib.auth.views.logout %}">sign out</a>] 
{% else %} 
    [<a href="{% url django.contrib.auth.views.login %}">sign in</a>] 
{% endif %} 

そして urls.py では、標準の認証関連のもの (django.contrib.auth.forms から AuthenticationForm などをインポートします)。

問題は、正常に認証でき、ユーザー名/パスワードのチェックが機能しており (正しくないユーザー/パスワードを使用できない)、管理ページで認証されているが、他のページでは認証されていないことです。 )。

「 django.contrib.auth.context_processors.auth 」がこれを実現する魔法だと思いますが、上記のように settings.py で設定されています。

この問題を追跡する方法に関するヒントはありますか?

編集(コメントでコードの書式設定を行うことができないため、ダニエルの回答を拡張)

私が持っていたviews.pyで:-

def detail(request):
    obj = get_object_or_404(MyModel, pk=some_id)    
    return render_to_response('myapp/index.html', {'MyModel': obj})

になるはずだった

    return render_to_response('myapp/index.html', {'MyModel': obj}, RequestContent(request))
4

2 に答える 2

4

テンプレートをレンダリングするためにRequestContextを使用していますか? 適用しない限り、コンテキスト プロセッサは適用されません。

于 2011-01-20T22:49:55.603 に答える
0

django-postman が RequestContext を破棄するのを参照してください。これで TEMPLATE_CONTEXT_PROCESSORS 2 アイテムを割り当て、デフォルトのアイテムをオーバーライドしています。

于 2012-04-21T15:03:51.037 に答える