如何调用由 post 请求调用的 python flask 函数?
How to call a python flask function which is call by a post request?
在下面的代码中,your_method
在 slack
中执行 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
。
例如。
def print:
a = your_method('hello','world')
这给我错误=>
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)
根据签名,此函数仅接受关键字参数。
def your_method(**kwargs):
你用位置参数调用它。
your_method('hello', 'world')
您要么需要更改签名
def your_method(*args, **kwargs)
或不同的称呼
your_method(something='hello', something_else='world')
你不能这样做。用 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 的请求输入时执行。
更好的做法是将您尝试执行的任何逻辑抽象到另一个函数中。
在下面的代码中,your_method
在 slack
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
。
例如。
def print:
a = your_method('hello','world')
这给我错误=>
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)
根据签名,此函数仅接受关键字参数。
def your_method(**kwargs):
你用位置参数调用它。
your_method('hello', 'world')
您要么需要更改签名
def your_method(*args, **kwargs)
或不同的称呼
your_method(something='hello', something_else='world')
你不能这样做。用 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 的请求输入时执行。
更好的做法是将您尝试执行的任何逻辑抽象到另一个函数中。