Django中没有' method '属性

0 投票
1 回答
791 浏览
提问于 2025-04-17 16:42

我在一个页面上有多个表单,我的视图通过检查提交按钮的值来处理这些表单。这个方法看起来没问题,但我的一个表单出现了下面的错误。

'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标签。

这是我页面上一个正常工作的表单的代码。

<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>

这个表单似乎工作得很好。我不明白我到底做错了什么。

谢谢大家。

1 个回答

1

看起来这是一个简单的函数名冲突。你的视图方法的名字是 all,而你一直在调用 all(request),如果 submit == all 的话,就会一直这样。

in 来检查提交的值是否在 request.POST 中似乎有点奇怪。为什么不直接设置一次这个值,然后用那种方式来比较呢?

submit = request.POST['submit']

if submit == 'all':
    # call method
elif submit == 'addtype':
   # etc

撰写回答