如何调用由帖子请求调用的python flask函数?

时间:2016-01-21 13:18:42

标签: python python-2.7 flask slack-api slack

在下面的代码中,your_method在松弛执行your_command时被调用

from flask_slack import Slack
slack = Slack(app)
app.add_url_rule('/', view_func=slack.dispatch)
@slack.command('your_command', token='your_token',
           team_id='your_team_id', methods=['POST'])
def your_method(**kwargs):
 text = kwargs.get('text')
 return text

如何从这个python程序中的另一个函数调用此your_method

EG。

def print:
 a = your_method('hello','world')

这给了我error =>

Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1381, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1475, in full_dispatch_request
rv = self.dispatch_request()
return func(**kwargs)
File "sample.py", line 197
a = your_method('hello','world')
TypeError: your_method() takes exactly 0 arguments (1 given)

2 个答案:

答案 0 :(得分:2)

根据签名,tis函数只接受关键字参数。

def your_method(**kwargs):

你用位置参数调用它。

your_method('hello', 'world')

您需要更改签名

def your_method(*args, **kwargs)

或以不同方式调用

your_method(something='hello', something_else='world')

答案 1 :(得分:0)

你不能这样做。用route装饰器修饰的方法不能接受您传入的参数。视图函数参数保留用于路径参数like the following

@app.route('/user/<username>')
def show_user_profile(username):
    # show the user profile for that user
    return 'User %s' % username

@app.route('/post/<int:post_id>')
def show_post(post_id):
    # show the post with the given id, the id is an integer
    return 'Post %d' % post_id

此外,Flask不希望您直接调用这些方法,它们只是为了响应Flask的请求输入而执行。

更好的做法是将你想要做的任何逻辑抽象到另一个函数中。