从Django模板中的response.POST.get()访问QueryDict元素

时间:2016-12-08 16:35:39

标签: python django

这是我的页面:

<p>Request as string: {{ request.POST }}</p>

哪个正确呈现:

  

请求为字符串:&lt; QueryDict:{'csrfmiddlewaretoken':['HPOQ0pfVf5DU0Lkz05IXqbECipdPUOcTiNGYWd4giZC7LVL5Y6jdT0nb0AcmX9pd'],'txtNumBins':['3'] }&gt;

我正在尝试访问列表txtNumBins。但是当我在我的Django模板中尝试以下任何时:

<p>Total bins: {{  request.POST['txtNumBins'][0]  }} </p> 
<p>Total bins: {{  request.POST.get('txtNumBins')[0]  }} </p> 
<p>Total bins: {{  request.POST['txtNumBins']  }} </p> 
<p>Total bins: {{  request.POST.get('txtNumBins')  }} </p> 

我一直收到同样的错误:

TemplateSyntaxError at /analysis/
Could not parse the remainder: '['txtNumBins'][0]' from'request.POST['txtNumBins'][0]'

如何按名称访问字典元素txtNumBins?

2 个答案:

答案 0 :(得分:4)

Django模板语言不是Python。您不能使用参数调用<label for="round_trip" id="LABEL_1"> <input type="radio" checked="checked" name="trip_type" id="INPUT_2" value="true" /> Round trip </label>之类的函数,或使用方括号进行字典/索引查找。相反,您使用点进行字典/索引查找以及属性查找。

在这种情况下,您需要:

get()

有关详细信息,请参阅variables上的模板文档。

答案 1 :(得分:3)

如您所见,您不能默认使用函数调用,按键访问字典或在模板内列出索引。您可能最好在视图中获取此信息,并将其作为响应上下文的一部分传递。例如:

def my_view(request):
    total_bins = request.POST['txtNumBins'][0]
    return render(request, 'my_template.html', {'total_bins': total_bins})

然后在你的模板中你可以这样做:

<p>Total bins: {{ total_bins  }}</p>