Django表单抛出错误:“只取1个参数(0给定)”

时间:2010-06-23 20:56:39

标签: python django django-forms

我正在处理从模型创建的基本事件表单,但我不断收到以下错误消息:

TypeError at /addlaundry/
addlaundry() takes exactly 1 argument (0 given)

我认为这是因为我没有通过观点传递论据,但我无法在任何地方找到记录如何做到这一点,至少不是以我理解的方式写的。

这是我的urls.py:

urlpatterns = patterns('',
    url('^addlaundry/$', 'beacon.laundry.views.addlaundry'),
}

观点本身:

# Create your views here.

from schedule.views import EventForm

def addlaundry(request):
    if request.method == 'POST':
        form = EventForm(request.POST)
        if form.is_valid():
            return HttpResponseRedirect('/thanks/') #redirect after succesfully adding new delivery
    else:
     form = addlaundry()

    return render_to_response('newlaundry.html', {
        'form': form,
    })

我确实错误地构建了自己的观点,还是我错过了其他内容?如果有我需要阅读的文档,我想我只是没有找到它但感觉我错过了一些基本的东西。

谢谢,

迈克尔

6 个答案:

答案 0 :(得分:3)

问题在于:

form = addlaundry()

你正在调用你的视图函数addlaundry,它需要1个必需参数(request),但你没有传递任何参数。

当然,无论如何,这不是构建表单的正确方法。您需要查看Django forms documentation中给出的示例,了解如何在Django中创建和使用表单。

答案 1 :(得分:1)

您的视图称为addlaundry,它会调用(大概)其他名为addlaundry的视图。重命名其中一个,或者使用其命名空间内的其他addlaundry

答案 2 :(得分:1)

这是你的问题:

 form = addlaundry()

那是试图调用视图本身!那不是你想要的。您需要定义一个表单类并在此处调用(实例化)它。

答案 3 :(得分:1)

views.py:

from schedule.forms import EventForm

def addlaundry(request):
    if request.method == 'POST':
        form = EventForm(request.POST)
        if form.is_valid():
            return HttpResponseRedirect('/thanks/')
    else:
        form = EventForm()

    return render_to_response('newlaundry.html', {
        'form': form,
    })

这意味着:

  • 使用forms.py文件定义表单
  • 在非帖子上下文中初始化您的表单(定期首页加载),该表单将传递给您的模板

答案 4 :(得分:1)

另外,在urls.py中,您的视图不应该是字符串。

答案 5 :(得分:-1)

else:
 form = addlaundry()

正如异常所说:view函数需要1个参数,但你没有提供任何参数。