我有一个像这样的函数friend_exists
:
def friend_exists(request, pid):
result = False
try:
user = Friend.objects.get(pid=pid)
except Friend.DoesNotExist:
pass
if user:
result = True
return result
我从我的其他功能中调用它:
exists = friend_exists(form.cleaned_data['pid'])
其中pid = u'12345678'
。为什么我得到:
Exception Type: TypeError at /user/register/
Exception Value: friend_exists() takes exactly 2 arguments (1 given)
有什么想法吗?
答案 0 :(得分:5)
为什么你认为它只应该拿一个?你在函数定义中显然有两个参数:
def friend_exists(request, pid):
就在那里,它说它需要request
和pid
。
答案 1 :(得分:2)
它需要两个参数,你只给它一个,form.cleaned_data ['pid']的值。如果该值实际上是两个参数的元组/列表,则需要使用星号扩展它:
exists = friend_exists(*form.cleaned_data['pid'])
在这种情况下,更简洁的方法可能是:
request, pid = form.cleaned_data['pid']
exists = friend_exists(request, pid)
答案 2 :(得分:1)
这看起来像django,所以正确调用你的函数的方法是friend_exists(request, form.cleaned_data['pid']
。当调用视图函数时,会自动填充请求,因此看起来似乎应该在django应用程序中的每次调用中发生,但是当您手动调用该函数时,您必须手动传递{{1}对象。