2010-07-07 104 views
-1

我有一个函数friend_exists这样的:函数需要2个参数时,应只有一个

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

请修复帖子标题错字funciotn。 – sivabudh 2010-07-07 21:57:32

回答

5

为什么你认为它应该只有一个?你已经清楚地得到了在函数定义两个参数:

def friend_exists(request, pid): 

就在那儿,它说,它预计requestpid

+0

如果这是'friend_exists'函数的实际来源,它看起来不需要'request'参数。也许这一个论点是重构之后的某种意外延期(或者其他)? – 2010-07-07 22:34:52

+0

我只是认为请求是自动填充的 – muntu 2010-07-07 23:20:06

2

它需要两个参数,你只给它一个,form.cleaned_data ['pid']的值。如果该值实际上是两个参数的元组/列表,你想与像星号展开:

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

在这种情况下,一个更简洁的方法可能然后是:

request, pid = form.cleaned_data['pid'] 
exists = friend_exists(request, pid) 
1

这看起来像django,所以正确调用你的函数的方式是friend_exists(request, form.cleaned_data['pid']。当一个视图函数被调用时,请求会自动填充,所以它看起来应该发生在每个django应用程序的调用中,但是当您手动调用该函数时,您必须手动将它传递给request对象。

相关问题