我很难让我的模板标签工作。我相信这是我调用app_filters的语法或方式。原谅我正在学习Web应用程序开发,所以如果我的逻辑关闭,请纠正我。我的目标是将一个模板上的复选框集合传递给在不同级别过滤的新模板.report_id是每个复选框的集合。
我的视图中有一个数组来自我在下面的GET.getlist调用
checkedlist = request.GET.getlist('report_id')
reportlist = QvReportList.objects.filter(report_id__in= checkedlist, active = 1).values_list('report_name_sc',flat = True)
print (checkedlist)
print (reportlist)
args = {'retreivecheckbox': checkedlist}
return render(request,'accounts/requestaccess.html', args)
当我打印我的阵列时,控制台会正确显示它,例如,如果选中了两个复选框:
['88', '89']
<QuerySet ['Common Data Model Reconciliation Load', 'LEJR BPCI IV - ICS Baseline']>
我创建了以下名为app_filters的模板标签:
from django import template
register = template.Library()
@register.filter
def get_list(querydict, itemToGet ):
return querydict.getlist(itemToGet)
现在我正在尝试让我的模板显示我的控制台中的内容,但是根据用户选择显示单独的行/索引。我被告知get_list会为我做这件事。我也试过get_at_index。 I.E.我希望看到retreivecheckbox为
88
89
and not [88,89]
使用以下模板,我的应用程序正确打印,但是,所有行都在88 89。
{% for app in retreivecheckbox %}
{{ app }}
{% endfor %}
当我尝试以下几种变体时,我的模板什么也没显示。为什么我的get_list没有将我的数组分成索引行?
{% load app_filters %}
{% for app in retreivecheckbox|get_list:report_id %}
{{ app }}
{% endfor %}
我的书籍示例显示为
{% for app in retreivecheckbox|get_list:"report_id" %}
但是,当我使用双引号或单引号时,它会出现以下错误:
'QuerySet' object has no attribute 'getlist'
使用{{ request.GET|get_list:"report_id" }}
将列表打印为[88,89] [88,89]
我尝试了各种不同的变体,但它没有按照我的要求显示,或者它不会显示。我一直在尝试打印'\ n'。join(map(str,list_of_ints)),它的工作原理除了4个项目仍然是一个复选框,而不是4个。
答案 0 :(得分:0)
感谢Daniel的澄清,通过在HTML中使用list标签可以轻松解决这个问题。我在想这个问题。