如何获取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
。我怎么解决这个问题?谢谢
答案 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", "")