检查是否在Django模板继承中进行了身份验证

时间:2012-01-21 23:22:19

标签: python 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>

我在这里错过了什么吗?

2 个答案:

答案 0 :(得分:3)

您需要将RequestContext传递给模板。最简单的方法是导入django.shortcuts并在视图中使用render方法:

return render(request, "my_template.html")

答案 1 :(得分:1)

  • 您的TEMPLATE_CONTEXT_PROCESSORS setting.py中的django.contrib.auth.context_processors.auth是什么?
  • 您使用requestContext渲染模板吗?
  • 检查会话是否已启用:MIDDLEWARE_CLASSES应包含'django.contrib.sessions.middleware.SessionMiddleware'