0

我有这样的功能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)

有任何想法吗?

4

3 回答 3

6

为什么你认为它应该只需要一个?您显然在函数定义中有两个参数:

def friend_exists(request, pid):

就在那里,它说它期望requestpid

于 2010-07-07T21:56:24.773 回答
2

它需要两个参数,而您只给它一个参数,即 form.cleaned_data['pid'] 的值。如果该值实际上是两个参数的元组/列表,您希望使用星号扩展它,例如:

exists = friend_exists(*form.cleaned_data['pid'])

在这种情况下,一种更清洁的方法可能是:

request, pid = form.cleaned_data['pid']
exists = friend_exists(request, pid)
于 2010-07-07T21:55:56.570 回答
1

这看起来像 django,所以正确调用函数的方法是friend_exists(request, form.cleaned_data['pid']. 当调用视图函数时,请求会自动填充,因此 django 应用程序中的每次调用似乎都应该发生这种情况,但是当您手动调用该函数时,您必须手动将request对象传递给它。

于 2010-07-07T22:23:48.310 回答