我创建了一个包含5个选项的下拉菜单。当用户选择一个选项并按下提交按钮时,如何将该“选择”传输到Django中的后端/服务器?
之后,当选择的值到达后端时,我打算使用该值来创建另一个表单。有5种形式可供选择(每种形式一种),出现的形式类型取决于原始选择的值。
这是我到目前为止所得到的,但我收到错误,在QueryDict中找不到“密钥'选择:{}”
这是HTML文件:
<div id = "f1" style="display:none">
<form name= "form1" action='/products/{{ action }}/' method='get'>
<p class="choice-header"> Product: </p>
<select id = "g1" title="selection" onchange = "showForm()">
<option value = "0">--</option>
<option value = "1">Form 1</option>
<option value = "2">Form 2</option>
<option value = "3">Form 3</option>
<option value = "4">Form 4</option>
<option value = "5">Form 5</option>
</select>
<div id= "b1" style="display:none">
<input class="button" type=submit value="{{ button }}">
</div>
</form>
</div>
这是Django views.py文件
def new2(request):
form_no = request.GET["selection"]
if form_no == 1:
form_to = Form1()
c = RequestContext(request, {
'action': 'add/2',
'button': 'Add',
'form': form_to,
})
return render_to_response('links/add.html', c)
感谢您的帮助!
答案 0 :(得分:1)
这可以帮助你:django - collecting data from a HTML <select>。
基本上,您需要在HTML中的select元素上使用名称,然后可以使用以下命令访问它:
request.GET["nameOfYourAwesomeSelectList"]
编辑:刚刚注意到你正在使用GET方法。您是否有理由使用GET将表单数据发送到服务器?纯粹的好奇心。
编辑2:有关form_to的错误,请注意您只在所选项目为1时初始化它?因此,当您选择一个非值为1的项时,form_to永远不会被初始化,因此当您创建RequestContext时,它会生气。当form_to为null时,您将要么始终初始化它,使用form_to或更改创建RequestContext的方式。
答案 1 :(得分:1)
这不是Django的问题。您尚未向select
元素提供name
属性。
<select id="g1" name="selection">