获取所有请求输入值

时间:2015-05-18 10:39:32

标签: python django

我是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"]一样 我希望找到一种方法来获取列表或字符串中的所有值,并且我不必查看输入字段的名称。

3 个答案:

答案 0 :(得分:1)

正如@Vivek Sable在评论中提到的,您可以使用request.POST.values()request.POST.keys()。另一种可能性是convert the POST dictionary into a list of tuplesrequest.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())