Djangoテンプレートタ+テンプレートとユーザーです。is_authenticatedな
-
21-09-2019 - |
質問
私は不思議な問題は、設定ファイルすべてが有効でいるとされていないことがあります。is_authenticated用テンプレートを作成します。
私は、以下のテンプレートタグ:
from django import template
from progmatic.cms.models import navigation, navigation_item
from django.template.defaultfilters import slugify
from django.shortcuts import render_to_response
from django.template import RequestContext
register = template.Library()
""" Gets the menu items you have entered in the admin.
No arguments are accpeted"""
def get_hoofd_menu( ):
menu = navigation.objects.get( slug = "hoofd-menu");
mcontent = navigation_item.objects.filter( parent_menu = menu);
return { 'mcontent' : mcontent }
def get_sub_menu( menu ):
menu = navigation.objects.get( slug = slugify(menu) )
mcontent = navigation_item.objects.filter( parent_menu = menu )
c = RequestContext( request, { 'mcontent': mcontent,} )
return render_to_reponse('menu.html', RequestContext(request, { 'mcontent' : mcontent }) )
register.inclusion_tag('menu.html')( get_hoofd_menu )
register.inclusion_tag('menu.html')( get_sub_menu )
のテンプレートmenu.htmlは以下のとおりです。
{% block mainmenu %}
<ul>
{% for content in mcontent %}
{% if content.login_required %}
{% if content.to_page %}
<li><a href="/page/{{ content.to_page_slug }}">{{ content.name }}</a></li>
{% endif %}
{% if content.to_url %}
{% if content.external %}
<li><a href="{{ content.to_url }}" rel="external">{{ content.name }}</a></li>
{% else %}
<li><a href="{{ content.to_url }}">{{ content.name }}</a></li>
{% endif %}
{% endif %}
{% else %}
{% if content.to_page %}
<li><a href="/page/{{ content.to_page_slug }}">{{ content.name }}</a></li>
{% endif %}
{% if content.to_url %}
{% if content.external %}
<li><a href="{{ content.to_url }}" rel="external">{{ content.name }}</a></li>
{% else %}
<li><a href="{{ content.to_url }}">{{ content.name }}</a></li>
{% endif %}
{% endif %}
{% endif %}
{% endfor %}
</ul>
{% if user.is_authenticated %}
JEEEEEEEJ LOGGED IN
{% else %}
Not logged in
{% endif %}
{% endblock %}
で返しますログインしていない場合でも私はログインし...は誰もが持ってい手がかりには何が間違っているこのコードについて教えてください。
よろしくお願いします。
挨拶 Bloeper
解決 3
すべてのヘルプのためのすべての感謝の最初の。 私はあなたのすべてにソリューションのおかげで見つかった:) 私はすべてのビューでリクエストオブジェクトを渡すために必要な、私のテンプレートタグでの引数としてそれを置くために必要と判明しました。 ソリューションコード:
from django import template
from progmatic.cms.models import navigation, navigation_item
from django.template.defaultfilters import slugify
from django.shortcuts import render_to_response
from django.template import RequestContext
from itertools import chain
register = template.Library()
""" Gets the menu items you have entered in the admin.
No arguments are accepted"""
def get_hoofd_menu( request ):
menu = navigation.objects.get( slug = "hoofd-menu");
mcontent = navigation_item.objects.filter( parent_menu = menu, login_required = False);
if request.user.is_authenticated and not request.user.is_anonymous():
mmcontent = navigation_item.objects.filter( parent_menu = menu, login_required = True )
else:
mmcontent = ""
final_menu = list(chain(mcontent,mmcontent))
return { 'mcontent' : final_menu }
#return render_to_response('menu.html', { 'mcontent' : mcontent } )
def get_sub_menu( request, menu ):
menu = navigation.objects.get( slug = slugify( menu ) )
mcontent = navigation_item.objects.filter( parent_menu = menu, login_required = False )
if request.user.is_authenticated and not request.user.is_anonymous():
mmcontent = navigation_item.objects.filter( parent_menu = menu, login_required = True )
else:
mmcontent = ""
final_menu = list(chain(mcontent,mmcontent))
return { 'mcontent' : final_menu }
#return render_to_response('menu.html', { 'mcontent' : mcontent })
register.inclusion_tag('menu.html')( get_hoofd_menu )
register.inclusion_tag('menu.html')( get_sub_menu )
アルのおかげでヘルプ:)
他のヒント
あなたが持っていますジャンゴ TEMPLATE_CONTEXT_PROCESSORS >設定?
試しにもう一つは、あなたのrender_to_reponse構文です。ドキュメントによると、それがあるべき
return render_to_response('my_template.html',
my_data_dictionary,
context_instance=RequestContext(request))
いその他のコプロセッサーの登録?いセット user
?
私のおすすめ動で機器のサーバーと次のように:
rc = RequestContext(request, ... params ...)
user = rc.get('user')
print user.username, user.is_authenticated()
が得られないときには、いくつかの値、また、その深くまで掘り進める必要もあり.を繰り返し処理を実行してすべてのコンテキストdicts示する(s)に含まれる値'ユーザ'.最終的にはそのテンプレートます。
rc = RequestContext(request, ... params ...)
for d in rc:
print d
あなたが設定ファイルでdjango.contrib.authとdjango.contrib.sessionsを持っているのですか?
ここで、ユーザが認証されたか否かをチェックする実際のコードはありますか?テンプレートでそれを確認する場合は、テンプレートにビューからパラメータを渡すときに、あなたはいくつかのindivcationを提供する必要があります。 私にとって、それは私が先頭にこれを行うときに動作します:
from django.contrib.auth.decorators import login_required
と、それは重要ですすべてのビュー、例えば飾るます:
を@login_required
def get_hoofd_menu( ):
これは、すべての概要の(Aで述べています少し上の途中で)