2012-01-21 9 views
1

テンプレートに次のコードがあり、ユーザーがログインしているときに表示が難しいです。ログインできるようになりますが、ページを再訪すると、まだ認証されていません。Djangoテンプレートの継承で認証されているかどうかを確認する

{% extends "base.html" %} 

{% load catalog_tags %} 
{% block site_wrapper %} 
<div id = "main"> 
    <a href="#content" class="skip_link">Skip to main content</a> 
    <div id = "banner"> 
    <div class="bannerIEPadder"> 
     <div class="cart_box"> 
    {% cart_box request %} 
     </div> 

    </div> 
    </div> 
    <div style="float:right;">[search box goes here]</div> 
    <div id="navigation"> 
    <div class="navIEPadder"> 
     <!--navigation tabs at the top of each page --> 
     {% comment %}{% include "tags/navigation.html" %} {% endcomment %} 
     {% category_list request.path %} 
    </div> 
    </div> 
    <div id="middle"> 
    <div id="sidebar"> 
     <!--<div class="sidebarIEPadder">[search box goes here]</br> 
    {% comment %}{% category_list request.path %}{% endcomment %} 
     </div>--> 
    </div> 
    <div id="content"> 
<!--  <a name = "content"></a>--> 
     <div class="contentIEPadder"> 
    {% block content %}{% endblock %} 
     </div> 
    </div> 
    </div> 

    <div id="footer"> 
    <div class="footerIEPadder"> 
     {% footer_links %} 
    </div> 
    </div> 

</div> 
{% endblock %} 

ここでは、そのファイルを参照しています。これはすべてのテンプレートの拡張であるため、考慮する必要があるのでしょうか?

###category_list.html 
<!--<h3>Categories</h3>--> 

<!--<ul id="categories">--> 
<ul> 
    {% with active_categories as cats %} 
    {% for c in cats %} 
    <li> 
    {% comment %} 
    {% ifequal c.get_absolute_url request_path %} 
    {{c.name}} 
    {% else %} 
    {% endcomment %} 
    <div><a href="{{c.get_absolute_url}}" class="category">{{c.name}}</a></div> 
    {% comment %}{% endifequal %}{% endcomment %} 
    </li> 
    {% endfor %} 
    <div class="fr"> 
    <ul> 
     <li> 
    {% if user.is_authenticated %} 
    <a href = "{% url django.contrib.auth.views.logout %}">Logout</a> 
    {% else %} 
    <a href = "{% url django.contrib.auth.views.login %}">Login</a> 
    {% endif %} 
     </li> 
    </div> 
{% endwith %} 


</ul> 

<div class="cb"></div> 

ここに何か不足していますか?

+0

は 'django.contrib.auth.context_processors.auth'inあなた' TEMPLATE_CONTEXT_PROCESSORS'のsetting.pyですか? – danihp

+1

"user"オブジェクトはどこから来たのですか?これをページで使用できるようにするビュー機能を含めることはできますか?セッションミドルウェアを正しく使用していますか? –

+0

@danihpはいそれはあります。 – locoboy

答えて

1
  • TEMPLATE_CONTEXT_PROCESSORSのset.pyにdjango.contrib.auth.context_processors.authがありますか?
  • requestContextレンダリングテンプレートを使用していますか?
  • セッションが有効になっていることを確認します。MIDDLEWARE_CLASSESは「django.contrib.sessions.middleware.SessionMiddleware」
+0

私はrequestContextレンダリングテンプレートを使用していて、TEMPLATE_CONTEXT_PROCESSORSも設定しています – locoboy

3

が含まれている必要がありますが、テンプレートにRequestContextのを渡す必要があります。これを行う最も簡単な方法は、あなたのビューでレンダリング方法をdjango.shortcutsをインポートして使用することです:

return render(request, "my_template.html") 
+0

テンプレートにコンテキストを渡していますが、request.pathには適用されません。 – locoboy

関連する問題