2

我创建了一个包含 5 个选项的下拉菜单。当用户选择一个选项并按下提交按钮时,如何将该“选择”传输到 Django 中的后端/服务器?

After that, when the value of the selection reaches the backend, I intend to use the value to create another form. 有 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)

谢谢您的帮助!

4

2 回答 2

1

这应该可以帮助您:django - 从 HTML <select> 收集数据

基本上,您需要在 HTML 中的 select 元素上命名,然后您可以通过以下方式访问它:

request.GET["nameOfYourAwesomeSelectList"]

编辑:刚刚注意到您正在使用 GET 方法。您使用 GET 将表单数据发送到服务器是否有原因?纯粹的好奇。

编辑 2:对于您关于 form_to 的错误,请注意您仅在所选项目为 1 时才对其进行初始化?因此,当您选择一个值不是 1 的项目时,form_to 永远不会初始化,因此当您创建 RequestContext 时,它会生气。您需要始终初始化它,form_to,或者在 form_to 为空时更改创建 RequestContext 的方式。

于 2012-08-03T20:58:35.953 回答
1

这不是真正的 Django 问题。你只是没有给你的select元素一个name属性。

<select id="g1" name="selection">
于 2012-08-03T20:58:59.610 回答