0

1 つのページに複数のフォームがあり、ビューは送信の値をチェックしてこれらを処理しています。これはすべてうまくいくようですが、私のフォームでは以下のエラーが発生します。

'QueryDict' object has no attribute 'method'

見る

def all(request):
if request.method == 'POST':
    if 'all' in request.POST['submit']:
        all(request.POST)
    elif 'addtype' in request.POST['submit']:
        addtype(request.POST)
    elif 'addnewpm' in request.POST['submit']:
        addnewpm(request.POST)
    elif 'addnewspec' in request.POST['submit']:
        addnewspec(request.POST)
    elif 'update' in request.POST['submit']:
        update(request.POST)
    elif 'addnewrecord' in request.POST['submit']:
        addnewrecord(request.POST)

基本的に、どの送信ボタンが押されたかに基づいて、投稿値を別の関数に渡しているだけです。最初の「すべて」を除いて、それらはすべて正常に機能します。「すべて」送信ボタンは大量のデータを送信しており、トレースバックでこのすべてのデータを確認できます。

私のHTMLコードと関係があるのか​​もしれません。

<table class="gridtable">
<tr>
<td class="topheader-left" colspan="10">     
<form action="" method="post">
<button type="submit" value="all" name="submit" style="border:0px;">
<img src="{%  get_static_prefix %}images/update.png" style="width:27px;height:27px;">
</button>
</td>
</tr>

この下には、フィールドと最後に /form を持つ多数のテーブル セルがあります。

正常に動作する私のページのフォームの 1 つからのコード。

<table width="100%">
<tr>
<form method="post" action="">
<td>
<input id="newtype" type="text" name='newtype' size="40" value="Service Type">
</td>
<td>
<button name="submit" type="submit" value="addtype" style="border:0px;">
<img src="{% get_static_prefix %}images/Add-icon.png" width="20" height="20" border="0">
</button>
</td>
</form>

このフォームはうまく機能しているようです。私は自分が違うことをしていることを理解していません。

乾杯。

4

1 に答える 1

1

単純な関数名の衝突のようです。ビュー メソッド名はallであり、何度も何度も呼び出していますall(request):) の値がsubmit == all.

inrequest.POST で submit の値を探すために使用するのは奇妙に思えます。一度値を設定して、そのように比較してみませんか?

submit = request.POST['submit']

if submit == 'all':
    # call method
elif submit == 'addtype':
   # etc
于 2013-02-22T01:04:41.290 に答える