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

Sha*_*ton 4 python django

这是我的页面:

<p>Request as string: {{ request.POST }}</p>
Run Code Online (Sandbox Code Playgroud)

哪个正确呈现:

作为字符串请求: <QueryDict: {'csrfmiddlewaretoken': ['HPOQ0pfVf5DU0Lkz05IXqbECipdPUOcTiNGYWd4giZC7LVL5Y6jdT0nb0AcmX9pd'], 'txtNumBins': ['3'] }>

我正在尝试访问列表 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> 
Run Code Online (Sandbox Code Playgroud)

我不断收到相同的错误:

TemplateSyntaxError at /analysis/
Could not parse the remainder: '['txtNumBins'][0]' from'request.POST['txtNumBins'][0]'
Run Code Online (Sandbox Code Playgroud)

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

Ala*_*air 5

Django 模板语言不是 Python。您不能像使用get()参数那样调用函数,也不能使用方括号进行字典/索引查找。相反,您可以使用点进行字典/索引查找以及属性查找。

在这种情况下,您想要:

{{ request.POST.txtNumBins }}
Run Code Online (Sandbox Code Playgroud)

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


ele*_*han 5

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

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

然后在您的模板中您可以执行以下操作:

<p>Total bins: {{ total_bins  }}</p>
Run Code Online (Sandbox Code Playgroud)