django模板中的“用户”

时间:2018-07-14 16:55:15

标签: django

因此,我仅了解基于类的视图,以及它们如何将上下文传递给相应的模板进行渲染。但是我在下面附加的一些代码中发现了一些奇怪的东西:

django模板可以识别user中的if user.is_authenticated,但是我检查了Sdetailview的上下文,user不在其中。当我以管理员身份登录时,模板将呈现1,否则呈现2。有人知道user是从哪里传递到模板的吗?除了上下文还从基于类的视图传递给模板什么?

谢谢。

这是视图:

from django.views.generic import DetailView
from . import models
class Sdetailview(DetailView):
    context_object_name = "details"
    model = models.School
    template_name = "basicapp/sdetail.html"

这是模型模板

{% extends "basicapp/bbase.html" %}
{% block body_block %}
{% if user.is_authenticated %}
<h1>1</h1>
{% else %}
<h1>2</h1>
{% endif %}
<div class="container">
  <h1>School Details</h1>
  <p>{{details.name}}</p>
  <p>{{details.principal}}</p>
  <p>{{details.location}}</p>
    <p><a class='btn btn-warning' href="{% url 'bapp:update' pk=details.pk %}">Update</a></p>
  </div>
</div>
{% endblock %}

1 个答案:

答案 0 :(得分:1)

DetailView如here所述,继承自多个mixin和属性。

正在传递上下文和请求。你也可以做

request.user.is_authenticated

上下文处理器也被传递。 默认情况下:

'context_processors': [
            'django.template.context_processors.debug',
            'django.template.context_processors.request',
            'django.contrib.auth.context_processors.auth',
            'django.contrib.messages.context_processors.messages',

'django.contrib.auth.context_processors.auth',负责 user.is_authenticated

有关上下文处理器here的更多信息。