Flask函数接受一个参数,2给出

时间:2016-04-02 22:41:58

标签: python flask wtforms

我试图使用form.consumer_key.data从我的WTForm传递数据,但是我得到了一个论据,说我传递了两个参数。我做错了什么?

这是我的错误

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

1 个答案:

答案 0 :(得分:1)

TwitterAuth类中的所有方法都没有self参数,这就是您收到错误的原因。

在Python中,每个实例方法都必须有self作为它的第一个参数。

(实际上它可以被称为任何东西,但self是常规名称:你不会看到任何其他名称。)

编辑:

此外,在getter和setter方法中,您应返回self.attribute_name并分配给self.attribute_name,以便返回并设置TwitterAuth实例的属性值,否则您将遇到更多错误。