【问题标题】:Not able to reach Flask webserver无法访问 Flask 网络服务器
【发布时间】:2019-08-04 17:53:39
【问题描述】:

这是我在 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 后,它无法正常工作,我认为有些事情发生了变化。我无法调试确切的问题。

--更新--

好的,在将烧瓶版本更新到 1.0.2 后,仍然无法从 url 访问网络服务器:http://127.0.0.1:5000/json-example。请查看下面的屏幕截图。

找不到 404 错误:

找不到

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

【问题讨论】:

  • 检查是否有另一个服务在 localhost:5000 上运行?简单的方法是使用另一个端口号并检查它是否有效。
  • 您的代码在烧瓶1.0.2 上运行良好。您正在遮蔽从test 导入的app(与您的问题无关)。没有根,因此http://127.0.0.1:5000 确实返回404
  • @Philip Tzou 5000 端口上没有运行其他程序。
  • @jlandercy 我没有得到你的答案。你能详细说明一下吗?
  • 您的代码适用于更高版本。 from test import app 行没有用,因为您正在隐藏 app 变量(但它不太可能与您的问题有关)。因为您没有为 root @app.route('/') 添加路由,所以基本 url http://127.0.0.1:5000 确实返回 404(您确定您尝试了正确的 url 吗?)。我的建议是更新你的烧瓶版本,注释掉第二个导入。然后运行并检查正确的 url。还添加一个根,它在某种程度上很有帮助。

标签: python python-3.x flask pip


【解决方案1】:

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

阴影

您确实需要避免一个符号与另一个符号重叠。

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

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

根网址

请添加一个/ 斜线路由,即使它不是绝对必要的。 你会发现它有助于调试。

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

版本

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

执行

与其让python直接调用app_.run(...),不如运行flask。使用exportenv,随心所欲:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      我在 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>'
      

      一切都很好。

      【讨论】:

        猜你喜欢
        • 2017-04-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-01
        • 2016-10-01
        • 2012-01-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多