如何从选择菜单获取数据到后端/服务器

时间:2012-08-03 20:46:18

标签: python html django forms views

我创建了一个包含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)

感谢您的帮助!

2 个答案:

答案 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">