布尔值的 Django 模板标签

     2023-02-24     86

关键词:

【中文标题】布尔值的 Django 模板标签【英文标题】:Django Template Tag for Boolean Value 【发布时间】:2017-05-15 06:01:02 【问题描述】:

我是 Django 新手,我被困在一个模板标签上,我不知道如何开始工作。我知道在我看来我遗漏了一些东西,但我已经用几种不同的方式编写了它,似乎找不到正确的方法来做到这一点。我的应用程序中有一个莫里斯图表,我正在尝试向其提供信息。我想显示可用运算符的百分比。在我的模型中,我有一个布尔值,表示运算符 is_available。当我将它传回模板时,我希望模板标签运行百分比并将值传回莫里斯饼图。

这是我的看法:

    @login_required(login_url='login/')
    def operator(request):
        operators = Operator.objects.all()
        operator_status = Operator.objects.values_list('is_available', flat=True)
        context = 
            'operators': operators,
            'operators_available': operator_status,
        
        return render(request, 'content/operator.html', context)

这是正在使用的模板标签:

<div class="widget-detail-1">
 <h2 class="p-t-10 m-b-0">  operators_available | percentage_of:True  </h2>
 </div>
</div>

最后是我的模板标签:

@register.filter(name='percentage_of')
def percentage_of(part, whole):
    try:
        return "%d"[2:] % (float(part) / whole * 100)
    except (ValueError, ZeroDivisionError):
        return "Division by Zero"

【问题讨论】:

您遇到了什么错误或问题? 我无法让它将值传递给可以处理的模板标签。我可以传递 true 或 false 或 【参考方案1】:

您真正想要实现的目标、Operators 模型的实际外观以及变量包含的值仍然有点令人困惑。但我会尽量猜测你想做什么,并尝试给你一个答案。

似乎您将operatorsoperators_available 的使用混合在一起,并且您还混合了浮点数和布尔值等数据类型的使用。

让我们看看你的代码...

# This returns all Model Instances of Operators. 
operators = Operator.objects.all()
# This only returns a list of Booleans. E.g. [True, True, False, True, True]
operator_status = Operator.objects.values_list('is_available', flat=True)

在您的模板中,您编写以下内容

<h2 class="p-t-10 m-b-0">  operators_available | percentage_of:True  </h2>

这等于percentage_of(operators_available, True) 的函数调用。还要记住 operators_available 来自您的 .valus_list('is_available') 并且是一个布尔值。所以你实际上在做的是percentage_of(True, True)

percentage_of 中,您可以尝试使用(float(part) / whole * 100) 或实际上更像float(True) / True * 100 将数学应用于这些布尔值。

解决方案

确保您传递给上下文的值是您期望的格式。目前看起来您认为您正在传递浮点值,但实际上是在传递布尔值。在将模板标签应用到它们之前尝试调试或打印这些值。

【讨论】:

【参考方案2】:

您的 operatorsoperator_status 变量必须是根据 Marcus Lind 的回答的数字:在您的代码中,operators 变量是 Operator 对象的查询集,而 operator_status 是一个列表。让您的代码工作的最简单方法是:

operators = Operator.objects.count()
operator_status = Operator.objects.filter(is_available=True).count()

在您的模板中,您需要将这两个参数传递给您的自定义过滤器(部分和整体):

 operators_available|percentage_of:operators 

另外,我认为您不希望在字符串格式中使用 [2:],因为您的 * 100 已经将数字转换为百分比。

【讨论】:

Django 模板自定义标签为布尔值

】Django模板自定义标签为布尔值【英文标题】:Djangotemplatecustomtagasboolean【发布时间】:2015-03-0306:34:36【问题描述】:这似乎是一件很简单的事情,但我似乎无法让它为一个人工作,而且我似乎无法在网上得到一个直接的答案,... 查看详情

Django 模板标签调试

...一个html模板,如下所示,我想知道获取/调试django标签%%值的方法是什么。我想在运行时查看标签值。例如%forcategoryincategories%%forerrorinform.errors%<!DOCTYPEhtml><html>< 查看详情

Django 模板中 simple_tag 数组值的问题

】Django模板中simple_tag数组值的问题【英文标题】:Problemswithsimple_tagarrayvaluesinDjangoTemplate【发布时间】:2012-04-0906:47:45【问题描述】:我正在尝试使用一个简单的标签将一个数组传递给我的模板。我在app/templatetags/pages_navigation.py... 查看详情

Django 模板中 simple_tag 数组值的问题

】Django模板中simple_tag数组值的问题【英文标题】:Problemswithsimple_tagarrayvaluesinDjangoTemplate【发布时间】:2012-04-0906:47:45【问题描述】:我正在尝试使用一个简单的标签将一个数组传递给我的模板。我在app/templatetags/pages_navigation.py... 查看详情

如何保存 django “with” 模板标签值并在其他模板中重用它?

...时间】:2019-12-0106:08:35【问题描述】:我有一个从URL读取值的模板标签。例如搜索词是癌症。搜索后,出现的下一页将有一个搜索词:癌症。而且我希望值cancer出现在我的所有网页中,直到用 查看详情

如何在自定义模板中使用 Django 的管理员布尔图标?

】如何在自定义模板中使用Django的管理员布尔图标?【英文标题】:HowtouseDjango\'sadminBooleaniconsinacustomtemplate?【发布时间】:2017-09-1718:47:18【问题描述】:我正在尝试构建一个django模板,该模板在某一时刻显示一个布尔变量。但... 查看详情

我的 django 模板布尔变量在 javascript 中没有按预期工作

】我的django模板布尔变量在javascript中没有按预期工作【英文标题】:Mydjangotemplatebooleanvariableisn\'tworkingasexpectedinjavascript【发布时间】:2012-09-0521:51:01【问题描述】:这是我的base.html标头中的代码<script>varauth_status="user.is_authen... 查看详情

显示 % forloop% 的键和值的 Django 模板:如何遍历模板中的字典?

】显示%forloop%的键和值的Django模板:如何遍历模板中的字典?【英文标题】:Djangotemplatedisplayingkeyandvaluesforthe%forloop%:Howtoiterateoveradictionaryinatemplate?显示%forloop%的键和值的Django模板:如何遍历模板中的字典?【发布时间】:2014-02-... 查看详情

在 Django 模板中格式良好的缺失值的模型字段列表

】在Django模板中格式良好的缺失值的模型字段列表【英文标题】:ListofmodelfieldswithmissingvaluesnicelyformattedinDjangotemplate【发布时间】:2020-01-2121:48:51【问题描述】:我正在尝试在Django中创建一个视图,以列出模型中的每个条目以及... 查看详情

使用 Django 模板标签的 Mako 模板

】使用Django模板标签的Mako模板【英文标题】:MakotemplatesusingDjangotemplatetags【发布时间】:2011-04-1623:49:23【问题描述】:我们的Django站点是使用Mako模板构建的。我们想使用一个名为django-socialregistration的第三方项目,但它的模板标... 查看详情

Django:调试模板标签

】Django:调试模板标签【英文标题】:Django:debuggingtemplatetags【发布时间】:2010-11-2920:44:48【问题描述】:人们到底是如何调试Django模板标签的?我创建了一个,基于一个工作示例,我的新标签在我看来与现有标签相同。但我只... 查看详情

django模板标签(代码片段)

文章目录一、使用Django模板修改页面二、Django模板标签-变量-列表-字典-过滤器1、default2、length3、filesizeformat4、date5、truncatechars6、safe-if/else标签-for标签-ifequal/ifnotequal标签-注释标签-include标签-csrf_token-自定义标签和过滤器-配置静... 查看详情

django模板标签(代码片段)

文章目录一、使用Django模板修改页面二、Django模板标签-变量-列表-字典-过滤器1、default2、length3、filesizeformat4、date5、truncatechars6、safe-if/else标签-for标签-ifequal/ifnotequal标签-注释标签-include标签-csrf_token-自定义标签和过滤器-配置静... 查看详情

Django 模板标签条件

】Django模板标签条件【英文标题】:DjangoTemplateTagConditional【发布时间】:2013-04-2312:48:04【问题描述】:如何从Django模板标签中创建条件语句?fromdjangoimporttemplatefromdjango.contrib.auth.modelsimportUser,Groupregister=template.Library()@register.simple... 查看详情

Jinja2 模板使用 Django 模板标签

】Jinja2模板使用Django模板标签【英文标题】:Jinja2templatesusingDjangotemplatetags【发布时间】:2011-06-1513:02:34【问题描述】:我在一个新项目中使用Jinja2,但想使用依赖Django模板标签的django-socialregistration应用程序。Jinja2不能很好地使... 查看详情

Django模板标签拆分

】Django模板标签拆分【英文标题】:Djangotemplatetagsplit【发布时间】:2017-04-2321:25:18【问题描述】:我有一个使用request.get_ull_path生成的url。我想使用django模板标签拆分并获取最后一部分。<ahref="request.get_full_path">这给了我abc.m... 查看详情

django之博客系统:自定义模板标签

Django提供了很多内置的模板标签比如% if %或者% block %Django也允许你创建自己的模板标签(template tags)来执行自定义的动作。当你需要在你的模板中添加功能而Django模板标签(template tags)的核心设置无法提供... 查看详情

Django - django 模板和标签

】Django-django模板和标签【英文标题】:Django-djangotemplatingandtags【发布时间】:2012-10-3110:20:49【问题描述】:我是Django框架的新手,我正在尝试按照步骤来执行官方django项目的文档。在模板中,我有一个名为base.html的文件HTML和以... 查看详情