当前位置: 首页 > 面试题库 >

base.html中的Django变量

燕光熙
2023-03-14
问题内容

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

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


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

只要:

  • 您可以render在视图中使用快捷方式(或小心使用aRequestContext来呈现响应)
  • django.contrib.auth.context_processors.auth您的TEMPLATE_CONTEXT_PROCESSORS设置(默认情况下)

…那么您在模板中可以使用当前请求的实例User(或AnonymousUser实例),因为{{ user }}…我想从那里您可以直接访问消息数量?

或者,也许您正在使用Django的消息框架?

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

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

  • 制作您自己的模板上下文处理器,该处理器将针对每个请求运行,并为 所有 模板提供其他变量(使用呈现时RequestContext

  • 制作自己的模板标记,该标记只能在需要的地方使用…当然,如果在您的base.html模板中使用了该标记,并且所有模板都继承自该标记,base.html那么它仍将在每个页面上运行。



 类似资料:
  • 问题内容: 它能够写,甚至。 但是,我找不到要添加值* -1之类的内容。不幸的是,这行不通。 问题答案: 你可以轻松地制作自己的模板标签:

  • 问题内容: 我正在使用{%trans%}模板标签。Django文档说: {%trans%}模板标记可转换常量字符串(用单引号或双引号引起来)或可变内容: {%trans“这是标题。” %} {%trans myvar%} https://docs.djangoproject.com/zh-CN/1.3/topics/i18n/internationalization/#trans-template

  • 上一节中,我们简单介绍了模板相关的概念,并手动实践了 python 中的两个流行的模板库 Mako 和 Jinja2。接下来,我们将深入了解如何在 Django 中使用模板系统。 1. Django 中的模板系统 Django 中自带了一个模板系统,叫做 Django Template Language (DTL),通过该引擎,我们可以方便的加载模板文件到内存中进行编译并动态插入数据,最后返回转换

  • 问题内容: 我正在Django中寻找一种简单但推荐的方式,将变量仅存储在内存中。当Apache重新启动或Django开发服务器重新启动时,该变量重置为0。更具体地说,我想计算在每个模型实例(数据库记录)上执行特定操作的次数,但是出于性能原因,我不这样做想要将这些计数存储在数据库中。我不在乎服务器重启后计数是否消失。但是,只要服务器启动,我就希望这些计数在Django Shell和Web界面之间保持

  • 问题内容: 我正在尝试使用Django模板引擎或任何其他方式创建 动态 CSS文件。 目前,我有一个CSS规则,如下所示: Where对应于Python中的变量。理论上,使用Django模板引擎,我可以这样写: 我的问题是,如何使用Django模板引擎(或任何其他方式)动态生成CSS? 问题答案: 您基本上有两个选择: 动态地为CSS提供服务,并在urls.py等中添加一个条目,就好像它是HTML

  • 问题内容: 我的视图代码基本上是这样的: 我想在Django模板中执行的操作是: 我想要这样输出: 但是通过变量名称via对dict的引用实际上不起作用。我怀疑它是在内部而不是在做。有什么办法可以解决此问题? 问题答案: 没有内置的方法可以执行此操作,您需要编写一个简单的模板过滤器才能执行此操作:http : //code.djangoproject.com/ticket/3371