2010-06-23 59 views
0

我的工作從模型創建的基本事件的形式,但我不斷收到以下錯誤信息: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, 
    }) 

難道我確實有我的觀點錯結構,還是我失去了什麼東西?如果有需要閱讀的文檔,我想我只是沒有找到它,但覺得我缺少一些基本的東西。

感謝,

邁克爾

+0

太基本了,我很慚愧。感謝所有的指針。 – 2010-06-23 21:07:21

回答

3

的問題是在這裏:

form = addlaundry() 

你調用您的視圖功能addlaundry這需要1個所需的參數(request),但你不能傳遞任何參數。

當然,這不是構建表單的正確方法,無論如何。您需要查看Django forms documentation中給出的示例,瞭解如何在Django中創建和使用表單。

1

你的觀點被稱爲addlaundry,並呼籲(大概)別的東西叫addlaundry。重命名其中一個,或者使用其名稱空間內的其他addlaundry

1

這是你的問題:

form = addlaundry() 

這是試圖調用視圖本身!這不是你想要的。您需要定義一個表單類並在這裏調用(實例化)它。

-1
else: 
form = addlaundry() 

正如異常說:視圖函數需要1個參數,但你沒有提供任何。

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文件來定義表單
  • 在非後上下文初始化表單(定期第一頁面加載),將傳遞到您的模板
1

另外,在urls.py你的看法不應該是一個字符串。

相關問題