无法访问Flask Web服务器

时间:2019-03-13 22:50:47

标签: python python-3.x flask pip

这是我在Visual Studio 2017上运行的测试代码,文件名为test:

from flask import Flask, request      #import main Flask class and request object
from test import app

app = Flask(__name__) #create the Flask app

@app.route('/query-example')
def query_example():
    return 'Todo...'

@app.route('/form-example')
def formexample():
    return 'Todo...'

@app.route('/json-example')
def jsonexample():
    return 'Todo...'

if __name__ == '__main__':
    app.run(debug=True, port=5000) #run app in debug mode on port 5000

但是当我在Visual Studio 2017中运行它并在Chrome浏览器中输入此路由“ http://127.0.0.1:5000/json-example”时,总是会收到此错误消息。

  

“找不到404”   在服务器上找不到请求的URL。如果输入URL   手动,请检查您的拼写,然后重试。

我是一名学习者,尝试过这篇文章: https://scotch.io/bar-talk/processing-incoming-request-data-in-flask

  • Python:3.6
  • 烧瓶:0.12.4
  • 点:18.1

以前我曾经用相同的代码获取返回消息,但是在将烧瓶更新为0.12.4之后,它不起作用了,我认为情况有所改变。我无法调试确切的问题。

-更新-

好吧,将Flask版本更新为1.0.2,但仍然无法从URL http://127.0.0.1:5000/json-example访问Web服务器。请查看下面的屏幕截图。

enter image description here

找不到404错误:

  

未找到

     

在服务器上找不到请求的URL。如果输入URL   手动,请检查您的拼写,然后重试。

3 个答案:

答案 0 :(得分:1)

The docs建议您验证.env和.flaskenv文件是否没有干扰。 (可能不是。)

阴影

您确实需要避免一个符号与另一个符号之间的阴影。

请不要命名您的模块test,因为python附带了带有该名称的系统库。您可以改用test1,以避免不必要的混乱。

由于您的模块具有一个app_文件,因此请将全局变量重命名为app.py

根URL

请添加一个/斜线,即使并非绝对必要。 您会发现它有助于调试。

@app_.route('/')
def root():
    return '<h1>top level</h1>'

版本

请运行current version的烧瓶。 用当前代码而不是downrev代码报告问题要好得多。

执行

而不是让python直接调用app_.run(...),请运行flask。使用exportenv,只要您喜欢:

$ export FLASK_APP=test1 FLASK_ENV=development
$ env    FLASK_APP=test1 FLASK_ENV=development flask run --port=5000

这将启用调试模式,这应该有助于您深入了解路由问题。 另外,编辑后重新加载非常方便。 关键是您运行python而不是运行flask,而运行python

答案 1 :(得分:0)

在进行故障排除时,我注意到上面的相同代码在具有相同python和flask版本的raspberry Pi零模块中有效。但是它在Windows 7的Visual Studio中仍然无法正常工作。我的Visual Studio可能存在一些问题。我将其卸载,然后重新安装。但是是的,我的问题现在已经解决。谢谢大家的回答。

答案 2 :(得分:0)

在Ubuntu 19.10上运行VS Code时,我遇到了同样的问题。问题是从路由视图函数返回的字符串。

@app.route('/')
@app.route('/index')
def index():

    return 'Hello World!'

给出错误404。但是当我更改为:

@app.route('/')
@app.route('/index')
def index():

    return '<h1>Hello World!</h1>'

一切都很好。