2016-04-02 4 views
-1

Я пытаюсь передать данные из своего WTForm, используя form.consumer_key.data, но я получаю аргумент, говорящий, что я передаю два аргумента. Что я делаю не так?Функция колбы принимает один аргумент, 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() реализация только добытчиками и сеттеров

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'? Вам не нужны методы setter в python –

ответ

1

Ни один из методов в классе TwitterAuth не имеет параметра self, поэтому вы получаете ошибку или.

В Python каждый метод метода должен иметь self как первый параметр.

(На самом деле это можно назвать чем угодно, но self - это условное название: вы не увидите другого имени).

EDIT:

Кроме того, в ваших методах получения и установки вы должны вернуть self.attribute_name и назначить self.attribute_name так, что вы возвращающиеся и устанавливающее значение атрибутов экземпляра TwitterAuth, в противном случае вы столкнетесь больше ошибок.

+0

Они также могут быть заменены на методы класса, потому что, похоже, нет необходимости в переменных экземпляра –

+0

@ cricket_007 На самом деле нет, поскольку OP, вероятно, намерен установить переменные экземпляра в методе тела, но пренебрегают назначением 'self.attr_name' - поскольку назначения не имеют смысла. – snakecharmerb

+0

Да, я читал переменные класса, и вам все равно нужно быть самим собой. Я думаю, что питонический подход просто не будет использовать геттеры и сеттеры, потому что они в значительной степени не нужны. –

Смежные вопросы