这个变量如何在Django中传递给模板?

时间:2013-07-23 08:05:14

标签: python django templates

视图功能如下所示:

def stats(request):
    """the stats page"""
    sidebarURLs = [reverse(p) for p in _sidebarPages]
    sidebar = zip(_sidebarPages, sidebarURLs, _sidebarNames)
    currpage = "dcstats"
    return render_to_response('datacollection/dcstats.html',
                              locals(),
                              context_instance=RequestContext(request))

模板文件如下:

{% extends "datacollection/login_base.html" %}
{% load dc_extras %}

{% block title %} {% endblock %}
{% block include %}

{% endblock %}

{% block onload %}
onload="init();"
{% endblock %}

{% block content %}

{% endblock %}

{% block sidebar %}
      <nav>
     <ul>
        {% for pg, url, name in sidebar  %}
        {% ifequal currpage pg %}
        <li>{{name}}</li>
        {% else %}
        <li><a href="{{url}}">{{name}}</a></li>
        {% endifequal %}
        {% endfor %}
     </ul>
      </nav>
      {% if user.is_staff %}
          <p> {{ user.is_staff }}  </p>
  <nav>
     <h3>Admin:</h3>
     <ul>
      <li><a href="{% url report %}">Weekly Report</a></li>
      <li><a href="{% url weekly_papers %}">Weekly Papers</a></li>
      <li><a href="{% url weekly_datasets %}">Weekly Datasets</a></li>
      <li><a href="{% url admin %}">Admin</a></li>
      <li><a href="{% url teams %}">Teams</a></li>
      <li><a href="{% url submissions_admin %}">Paper Submissions</a></li>
      <li><a href="{% url admin_help %}">Help</a></li>
 </ul>
  </nav>
      {% endif %}
{% endblock %}

我不明白的是模板文件最后的变量user,它在视图函数stats中找不到,它如何传递到模板中?有没有人有这个想法?谢谢

1 个答案:

答案 0 :(得分:3)

它被传递是因为您使用RequestContext()传递一些默认的上下文变量。 其中一个是user通过auth context processor

使用

RequestContext(),传递一些默认的上下文变量。

Requestcontext is here的更多细节。