Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何调用由post请求调用的python flask函数?_Python_Python 2.7_Flask_Slack Api_Slack - Fatal编程技术网

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

如何调用由post请求调用的python flask函数?,python,python-2.7,flask,slack-api,slack,Python,Python 2.7,Flask,Slack Api,Slack,在下面的代码中,your\u方法在执行your\u命令时被调用 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(*

在下面的代码中,
your\u方法
在执行
your\u命令
时被调用

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程序中从另一个函数调用此
您的_方法

例如

这给了我错误=>

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)

基于签名,tis函数只接受关键字参数

def your_method(**kwargs):
your_method('hello', 'world')
您可以使用位置参数来调用它

def your_method(**kwargs):
your_method('hello', 'world')
您需要更改签名

def your_method(*args, **kwargs)
或者换个说法

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

你不能这样做。用
route
decorator修饰的方法不能接受您传入的参数。视图函数参数是为路由参数保留的:

@app.route(“/user/”)
def显示用户配置文件(用户名):
#显示该用户的用户配置文件
返回“用户%s”%username
@app.route(“/post/”)
def显示_post(post_id):
#显示具有给定id的帖子,id为整数
返回“Post%d”%Post\u id
此外,Flask不希望您直接调用这些方法,它们仅在响应来自Flask的请求输入时执行


更好的做法是将您试图执行的任何逻辑抽象到另一个函数中。

为什么您不能直接导入并调用它?发生了什么?我不明白?这是一个函数。为什么不能像任何其他函数一样调用它,正如您在示例中所示?这给我错误=>我用错误更新了问题。