我是django的新手,所以这可能是一个非常基本的问题 在我的django模板表单中,我已经输入了很多输入字段来填充这样的
<form method="POST">
<input type="text" name="n_1" value="" />
<input type="text" name="n_2" value="" />
<input type="text" name="n_3" value="" />
.
.
.
<input type="text" name="n_ " value="" />
<input type="submit" value="submit" />
</form>
要访问所有输入,我可以逐个执行,就像通过改变循环中的i来询问request.POST["n_i"]
一样
我希望找到一种方法来获取列表或字符串中的所有值,并且我不必查看输入字段的名称。
答案 0 :(得分:1)
正如@Vivek Sable在评论中提到的,您可以使用request.POST.values()
和request.POST.keys()
。另一种可能性是convert the POST dictionary into a list of tuples与request.POST.items()
。
除此之外,我强烈建议您考虑使用标准的Django Form类:
forms.py:
from django import forms
class NameForm(forms.Form):
your_name = forms.CharField(label='Your name', max_length=100)
模板:
<form action="/your-name/" method="post">
{% csrf_token %}
{{ form }}
<input type="submit" value="Submit" />
</form>
然后你就可以从帖子数据构建表格了:
form = NameForm(request.POST)
在致电form.is_valid()
后,他收集的数据将在form.cleaned_data
。
有关Django documentation: Working with forms上的表单的更多信息。
答案 1 :(得分:1)
您可以遍历整个request.POST
并获取文本字段的值:
values = [value for name, value in request.POST.iteritems()
if name.startswith('n_')]
startswith()
需要过滤掉按钮的submit
值。
但是imho更好的选择是使用具有相同名称的输入并使用getlist()
方法获取值:
<form method="POST">
<input type="text" name="n" value="" />
<input type="text" name="n" value="" />
<input type="text" name="n" value="" />
.
.
.
<input type="text" name="n" value="" />
<input type="submit" value="submit" />
</form>
在视图中:
values = request.POST.getlist('n')
答案 2 :(得分:1)
将表单值输入Django 查看:
从请求中获取值 - request.POST.values()
从请求中获取密钥(输入名称) - request.POST.keys()
从词典:
中获取请求中的所有键和值 zip(request.POST.keys(), request.POST.values())