python - 使用蓝图的 Flask URL 路由不起作用,返回 404 http 代码

标签 python flask

我遇到了 flask url 路由问题;似乎路线没有按预期工作。

  1. project/src/views.py下,我有以下示例路由

    from flask import (Flask,request,jsonify,Blueprint)
    my_view = Blueprint('my_view', __name__)
    
    @my_view.route('/',methods=("GET",))
    @my_view.route('/index',methods=("GET",))
    def index():
        ....
        <return response code here> 
    
    @my_view.route("/key/<inp1>/<inp2>", methods=("POST","GET"))
    def getKey(inp1=None, inp2=None):
        ....
        <return response code here>
    
  2. 现在,在 project/src/app.py 下,我有以下代码

    from ../src.views import my_view 
    
    my_app = Flask("myappname")
    my_app.register_blueprint(my_view)
    my_app.run(debug=True,host=APP_IP,port=APP_PORT)
    

现在,当我使用有效参数访问 URL http://ip:port/indexhttp://ip:port/key... 时,它返回 404,并显示消息“在服务器上找不到请求的 URL。如果您手动输入 URL,请检查拼写并重试。”我相信提到的路线不起作用。

最佳答案

发现的第一个问题是您的方法参数。它需要一个列表/元组,但你传递的是一个字符串('GET')。更改为 methods=('GET', )。请注意此处“GET”后的逗号。或者为避免将来可能造成的混淆,请使用 methods=['GET']

第二个问题是您在app.py 中导入my_view 的方式。由于 views.pyapp.py 位于同一目录中,并且您要在该目录中启动 Flask 应用程序,因此您可以:

from views import my_view

但是,您应该考虑将您的应用构建为 Python Package

第三个问题是缺少from flask import Flask。也许您在发布代码时忽略了这一点。

我使用上述修复程序测试了您的代码,它可以正常工作。

编辑:感谢@dirn 指出方法参数接受元组。

关于python - 使用蓝图的 Flask URL 路由不起作用,返回 404 http 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30770052/

相关文章:

python - 导入错误 : No module named google. oauth2

python - SampleRNN - Pytorch 实现初学者

python - pyenv 或 virtualenv 对 Django 来说是必不可少的吗?

flask - 在 Pythonanywhere 上部署 Apache Superset

python - PySpark:TypeError: 'Row' 对象不支持项目分配

python - 如何在 Django 模型中保存对象列表?

python - werkzeug.routing.BuildError : Could not build url for endpoint 'success' . 您是否忘记指定值 ['name' ]?

sql-server - 如何让 SQLAlchemy 使用配置文件将 MSSQL 连接到 AWS?

python - Flask-Admin:同时在两个表中插入数据

python - 我应该在 Flask 应用程序中的什么地方放置清理代码?