gpt4 book ai didi

python - base.html 中的 Django 变量

转载 作者:IT老高 更新时间:2023-10-28 20:41:06 26 4
gpt4 key购买 nike

base.html 用作所有其他页面的基本模板。 base.html 有导航栏,在导航栏中,我想显示用户收到的消息数。因此,我需要在 base.html 中有一个类似 {{number_of_messages}} 的变量。

但是,我应该如何将这个变量传递给它?每个模板都扩展 base.html 并由函数呈现。我不认为在所有函数中返回 number_of_messages 是一个好方法。有没有更好的方法来实现这一点?如何将此变量传递给所有模板?

最佳答案

看看:
https://docs.djangoproject.com/en/dev/ref/templates/api/#django.template.RequestContext

只要:

  • 您在 View 中使用 render 快捷方式(或者注意使用 RequestContext 来呈现您的响应)
  • 在您的 TEMPLATE_CONTEXT_PROCESSORS 设置中有 django.contrib.auth.context_processors.auth (as it is by default)

...那么您的模板中可以使用当前请求的 User(或 AnonymousUser)实例作为 {{ user }} 。 ..我猜你可能可以直接访问消息的数量?

或者你正在使用 Django 的 messages framework ?

这带有它自己的上下文处理器(只要你使用 renderRequestContext)将生成一个 {{ messages }} var(包含当前用户的消息)在您的模板中可用。对于“消息数”,您可以执行 {{ messages|length }}

如果这些内置选项都不能满足您的需求,您也可以:

  • make your own template context processor它将针对每个请求运行并为 所有 模板提供额外的变量(当使用 RequestContext 呈现时)

  • make your own template tag只能在需要的地方使用...当然,如果在您的 base.html 中使用它并且所有模板都继承自 base.html 那么它仍然会运行每一页。

关于python - base.html 中的 Django 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21062560/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com