Django中没有' method '属性
我在一个页面上有多个表单,我的视图通过检查提交按钮的值来处理这些表单。这个方法看起来没问题,但我的一个表单出现了下面的错误。
'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