我正在处理从模型创建的基本事件表单,但我不断收到以下错误消息:
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,
})
我确实错误地构建了自己的观点,还是我错过了其他内容?如果有我需要阅读的文档,我想我只是没有找到它但感觉我错过了一些基本的东西。
谢谢,
迈克尔
答案 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,
})
这意味着:
答案 4 :(得分:1)
另外,在urls.py中,您的视图不应该是字符串。
答案 5 :(得分:-1)
else:
form = addlaundry()
正如异常所说:view函数需要1个参数,但你没有提供任何参数。