2

被这个卡住了一段时间:

我们有一个视图,上面有许多菜肴,如下所示:

spaghetti
tacos
burger

我们希望用户能够输入与每道菜相关的两条信息,即等级和评论。例如

spaghetti: 20, "tasty"
tacos: 10, "nasty"

但是,我们似乎无法找到一种方法来为评分和评论的输入框提供相同的名称,因此我们将返回一个 POST 字典,其中值本身就是列表:

spaghetti: [20,"tasty"]
tacos:  [10, "nasty"]

如果我们在 html 表单中将输入框和评论框都命名为“spaghetti”,那么 POST 只跟踪第二件事,即评论,并且等级完全丢失,所以我们得到的只是:

spaghetti: "tasty"
tacos: "nasty"

让我们知道我们做错了什么!!

谢谢!

4

2 回答 2

0

在表格中,命名一个 spaghetti_grade 和另一个 spaghetti_taste。然后您可以使用以下方式访问它们:

request.POST.get('spaghetti_grade','')request.POST.get('spaghetti_taste','')

这将使您无需列表即可获得两者。然后你可以对其他食物做同样的事情。

于 2013-08-03T23:26:58.343 回答
0

不幸的是,您只需要为每个等级和评论使用不同的 id,然后进行一些服务器端解析以很好地格式化您的数据。或者您可以进行客户端解析并使用 $.post 将 JSON 数据发送到服务器。老实说,我倾向于第二种选择,尽管您仍然需要进行一些服务器端验证/数据清理。

如果您选择第二个选项,您可以执行以下操作:

<div id='spaghetti'>
  <input field-type='grade' />
  <input field-type='comment' />
</div>

<script>
  $(document).ready(function() {
    $('input[type=submit]').click(function() {
      var data = {}
      var grade = $('#spaghetti').children('input[field-type=grade]').first().val();
      var comment = $('#spaghetti').children('input[field-type=comment]').first().val();
      data['spaghetti'] = [grade, comment];
      $.post('url', data);
    }
  }
于 2013-08-03T23:28:44.990 回答