我正在为强制下载开发一个简单的代码现在问题是我在GET方法中没有收到任何错误但在post方法请求中收到错误“405 Method Not Allowed”。我的GET方法代码。
@route('/down/<filename:path>',method=['GET', 'POST'])
def home(filename):
key = request.get.GET('key')
if key == "tCJVNTh21nEJSekuQesM2A":
return static_file(filename, root='/home/azoi/tmp/bottle/down/', download=filename)
else:
return "File Not Found"
当我用密钥请求时,它是在获取方法时返回我下载的文件 http://mydomain.com/down/xyz.pdf?key=tCJVNTh21nEJSekuQesM2A
现在我使用另一个代码来处理POST方法
@route('/down/<filename:path>',method=['GET', 'POST'])
def home(filename):
key = request.body.readline()
if key == "tCJVNTh21nEJSekuQesM2A":
return static_file(filename, root='/home/azoi/tmp/bottle/down/', download=filename)
else:
return "File Not Found"
现在通过使用此代码我无法处理post方法,即我从服务器获得405 Method Not Allowed错误。
对此有何解决方案?
答案 0 :(得分:12)
路由器在method
参数中只采用一种方法,而不是方法列表。请改用几个@route
装饰器:
@route('/down/<filename:path>', method='GET')
@route('/down/<filename:path>', method='POST')
def home(filename):
pass
查看文档以获取更多信息:http://bottlepy.org/docs/dev/routing.html#routing-order
<强>更新强>
Recent Bottle版本允许指定方法列表:http://bottlepy.org/docs/dev/api.html#bottle.Bottle.route