如何获取表单提交的所有选项

时间:2017-02-08 06:50:31

标签: python django forms

如何获取Django中表单提交的所有选项,这是我使用的表单。

{% extends 'quiz/base.html' %}
{% block content%}
<h1>You are at quiz page</h1>

<form action="{% url 'quiz:process_data' %}" method="post">
    {% csrf_token %}
    {% for question in question_set %}
        <h3>{{question.id}}.{{question.question_text }}</h3>
        {% for option in question.options_set.all %}
            <input type="radio" name="choice{{question.id}}" value="{{ option.options}}" > {{option.options}}<br>
        {% endfor %}
    {% endfor %}
    <input type="Submit" name="Submit">
</form>
{% endblock%}

我尝试selected_choice=request.POST,但将其作为输出csrfmiddlewaretokenchoice1Submitchoice3。我怎么解决这个问题?谢谢

2 个答案:

答案 0 :(得分:2)

在django request.POST是类字典对象,请参阅详细信息here。 因此,要在视图中获取参数选择,您可以使用以下语法:

selected_choice=request.POST.get('choice')

如果为空,则返回choice值或None

由于request.POST是类似dict的对象,因此您可以使用items()方法获取所有值并过滤它们:

for k, v in request.POST.items():
    if k.startswith('choice'):
        print(k, v)

这将仅打印名称中包含choice文本的参数。

答案 1 :(得分:0)

selected_choice=request.POST.get('choice')

上面应该可以正常工作,但是如果你疯了,你可以试试这个:

{% extends 'quiz/base.html' %}
{% block content%}
<h1>You are at quiz page</h1>

<form action="{% url 'quiz:process_data' %}" method="post" id= "crazyform">
    {% csrf_token %}
    {% for question in question_set %}
        <h3>{{question.id}}.{{question.question_text }}</h3>
        {% for option in question.options_set.all %}
            <input type="radio" name="choice" value="{{ option.options}}" > {{option.options}}<br>
        {% endfor %}
    {% endfor %}
    <input type="hidden" name="crazychoice" class="crazy" value="nothing">
    <input type="Submit" name="Submit">
</form>
{% endblock%}

然后是一些JQuery:

$('#crazyform input').on('change', function() {
$(".crazy").val($('input[name=choice]:checked', '#crazyform').val())})

每次单击单选按钮时,隐藏输入字段的值将更改为所选单选按钮的值。

然后在您看来,您可以:

selected_choice = request.POST.get("crazychoice", "")