2016-04-02 55 views
-1

我試圖從我的WTForm使用form.consumer_key.data傳遞數據,但我得到一個說法,我傳遞了兩個參數。我究竟做錯了什麼?Flask函數需要一個參數,2給出

這裏是我的錯誤

File "/Users/Gaby/Documents/Code/Twitty/app/views.py", line 18, in authenticate 

這是我的路,我正在試圖傳遞文件

auth = TwitterAuth() 

@app.route('/') 
@app.route('/authenticate', methods=['GET', 'POST']) 
def authenticate(): 
    form = TwitterAuthForm() 

    if form.validate_on_submit(): 

     #this is where my error is happening 
     auth.set_consumer_key(form.consumer_key.data) 
     auth.set_consumer_secret(form.consumer_secret.data) 
     auth.set_access_token(form.access_token.data) 
     auth.set_access_secret(form.access_secret.data) 
     return redirect('/index.html') 

return render_template('authenticate.html', 
     title='Sign In', 
     form=form) 

我TwitterAuth()的實現僅僅是getter和setter

class TwitterAuth(): 
     consumer_key = "" 
     consumer_secret = "" 
     access_token = "" 
     access_secret = "" 

     def set_consumer_key(ck): 
       consumer_key = ck 

     def set_consumer_secret(cs): 
       consumer_secret = cs 

     def set_access_token(at): 
       access_token = at 

     def set_access_secret(access_sec): 
       access_secret = access_sec 

     def get_consumer_key(): 
       return consumer_key 

     def get_consumer_secret(): 
       return consumer_secret 

     def get_access_token(): 
       return access_token 

     def get_access_secret(): 
       return access_secret 
+0

您的錯誤消息被剪輯。請粘貼整個錯誤消息。 – szym

+0

當你嘗試'auth.consumer_key = form.consumer_key.data'時會發生什麼? python –

回答

1

TwitterAuth類中沒有任何方法具有self參數,這就是爲什麼您會遇到錯誤要麼。

在Python中,每個實例方法必須具有self,因爲它是第一個參數。

(其實它可以被稱爲任何東西,但self是傳統的名稱:你不會看到使用任何其他名稱)。

編輯:

此外,在您的getter和setter方法應該返回self.attribute_name並分配給self.attribute_name讓您返回並設置TwitterAuth實例的屬性的值,否則你會遇到更多的錯誤。

+0

中不需要setter方法它們也可以全部更改爲類方法,因爲似乎不需要實例變量 –

+0

@ cricket_007其實不是,因爲OP可能打算在方法中設置實例變量身體,但忽略分配給'self.attr_name' - 否則分配是毫無意義的。 – snakecharmerb

+0

是的,我正在閱讀類變量,你仍然需要自我。我認爲Pythonic方法不會使用getter和setter,因爲它們在很大程度上是不必要的 –

相關問題