当我调用这些方法时,为什么一直出现“未找到”错误?

时间:2015-05-14 22:27:00

标签: python flask

我在Python中使用Flask,我正在尝试在我托管的服务器上详细说明发布请求(atm on localhost,因为我仍然试图让它工作)。

发布消息的方式如下:

payload = {'k' : '123' }
r = requests.post ('http://localhost', payload)

然后我得到的结果是

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>405 Method Not Allowed</title>
<h1>Method Not Allowed</h1>
<p>The method is not allowed for the requested URL.</p>

同时,如果我尝试将相同的请求发送到地址localhost / post,如下所示

r2  = requests.post ('http://localhost/post', data)

结果变为

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>404 Not Found</title>
<h1>Not Found</h1>
<p>The requested URL was not found on the server.  If you entered the URL manually please check your spelling and try again.</p>

我用来创建服务器的代码如下:

from flask import Flask, jsonify, Request
from flask.templating import render_template
from flask.globals import request

app = Flask(__name__)

@app.route('/', methods = ['GET', 'POST'])
def index ():
    return render_template('indexServer.html')

@app.route('/post', methods =['GET', 'POST'])
def post():
    return render_template('response.html')

if __name__ == '__main__':
    app.run(host = 'localhost', port = 80, debug = True)

现在,虽然索引函数中的GET方法有效,但当我尝试获取'/ post'页面时却不行。我想这背后的原因也是一样的,当我试图发布时,我得到404以上。

我想知道为什么会这样,因为我无法弄清楚发生了什么以及我做错了什么。如果还不是很明显,我刚刚开始使用Flask进行Python工作,所以它可能是任何东西。

感谢您的关注。

1 个答案:

答案 0 :(得分:1)

你的代码看起来很好 - 看起来像你的Flask应用程序实际上没有像你期望的那样在端口80上侦听。

这可能有很多原因 - 也许现有的流程已经在使用端口80,因此您的烧瓶应用程序无法绑定到它。或者在许多操作系统中,您需要将进程作为root运行,以绑定到小于1024的端口。我建议您将绑定端口更改为8088

if __name__ == '__main__':
    app.run(host = 'localhost', port = 8088, debug = True)

然后再次尝试您的请求:

r2  = requests.post ('http://localhost:8088/post', data)