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

时间:2015-06-11 01:25:28

标签: python flask

我正面临着烧瓶网址的问题;似乎路线没有按预期工作。

  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)
    
  3. 现在,当我使用有效参数访问网址http://ip:port/indexhttp://ip:port/key...时,它会返回404,并显示消息“服务器上找不到请求的网址。如果您手动输入了网址,请请检查你的拼写然后重试。”我相信提到的路线不起作用。

1 个答案:

答案 0 :(得分:3)

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

第二个问题my_view中导入app.py的方式。由于views.pyapp.py位于同一目录中,并且您正在该目录中启动烧瓶应用,您可以这样做:

from views import my_view

但是,您应该将应用程序结构化为Python Package

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

我使用上述修复程序测试了您的代码,它的工作原理应该如此。

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