2

しばらくこれにこだわっています:

次のように、いくつかの料理が表示されたビューがあります。

spaghetti
tacos
burger

ユーザーが各料理に関連する 2 つの情報 (グレードとコメント) を入力できるようにしたいと考えています。例えば

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

ただし、成績とコメントの入力ボックスに同じ名前を付ける方法が見つからないように見えるため、値がリスト自体である POST 辞書を取得します。

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

HTML 形式で入力ボックスとコメント ボックスの両方に「スパゲッティ」という名前を付けると、POST は 2 番目のものであるコメントのみを追跡し、成績は完全に失われるため、返されるのは次のとおりです。

spaghetti: "tasty"
tacos: "nasty"

私たちが間違っていることを教えてください!!

ありがとう!

4

2 に答える 2

0

フォームで、1 つの spaghetti_grade と別の spaghetti_taste に名前を付けます。次に、次を使用してそれらにアクセスできます。

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

これにより、リストを必要とせずに両方を取得できます。その後、他の食品についても同じことができます。

于 2013-08-03T23:26:58.343 に答える
0

残念ながら、成績とコメントごとに異なる ID を使用し、サーバー側で解析してデータを適切にフォーマットする必要があります。それか、クライアント側の解析を行い、$.post を使用して JSON データをサーバーに送信できます。正直なところ、2番目のオプションに傾倒しますが、サーバー側の検証/データのサニタイズを行う必要があります.

2 番目のオプションを使用する場合は、次のようにすることができます。

<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 に答える