为什么在这种情况下我的视图上下文不显示?

时间:2018-08-02 13:29:06

标签: python django

enter image description here enter image description here

我应该会在“通知”旁边和感叹号之前看到一个值。

听起来,我无法显示视图中提供的上下文变量“ {{var}}”。我已经尝试过基于cbv和函数的视图。

在此项目中,我使用的是Django 2.1,Python别名设置为3.6

这是我用来显示数字的第一种视图:

class NotificationView(DetailView):
    template_name = "base.html"

    def get_context_data(self, **kwargs):
        message_count = Message.objects.filter(recipient=self.request.user).count()
        safeTrans_count = SafeTransaction.objects.filter(trans_recipient=self.request.user).count()
        context = super().get_context_data(**kwargs)
        context["Notify"] = message_count + safeTrans_count
        return context

这是第二种视图,我试图制作尽可能简单的显示上下文的函数:

def NotifyView(request):
    title = "Notification View %s" % (request.user)
    context = {
        "Notification_Count": 10,
        "Notification_Title": title,
    }
    return render(request, "base.html", context)

这是用于显示的模板的摘要(诸如{{Notification_Title}}之类的变量根本根本不显示):

       {% if user.is_authenticated %}
        <a class="active-2" href="#">Notifications{{Notification_Title}} 
          <i class="fas fa-exclamation-circle">
          </i>
        </a>
       {% else %}

This is what the terminal looks like right now, no obvious errors for the behaviour

任何关于我可能被忽略的想法都将受到赞赏。

:::

这是我针对此特定问题的解决方案。请让我知道是否有一种更好的方法来显示值,而不必在模板上的实际模板标记中传递用户,例如:{% notify user %}

enter image description here

1 个答案:

答案 0 :(得分:1)

我认为您对URL,视图和模板之间的关系感到困惑。 URL调用一个视图,该视图(可能)呈现一个模板。因此,该视图负责提供渲染模板所需的所有信息。您不能只定义一个完全独立的视图并期望其信息以某种方式进入模板。

如果您需要通过多个视图将数据提供给模板,则可以使用多种方法-共享基本视图类,上下文处理器或自定义模板标签。