Django 表单抛出错误:“需要 1 个参数(给定 0 个)”
我正在做一个基本的事件表单,这个表单是从一个模型创建的,但我总是收到以下错误信息:
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 个回答
1
另外,在urls.py文件中,你的视图函数不应该用字符串表示。
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 的文件来定义你的表单
- 在没有提交表单的情况下(也就是普通的第一次加载页面),初始化你的表单,然后把它传递给你的模板
3
问题出在这里:
form = addlaundry()
你在调用你的视图函数 addlaundry
,这个函数需要一个必填的参数(request
),但是你没有给它传任何参数。
当然,这样构建表单也不是正确的方法。你应该看看 Django 表单文档 中的例子,了解如何在 Django 中创建和使用表单。