Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用blueprint的Flask URL路由不工作,返回404 http代码_Python_Flask - Fatal编程技术网

Python 使用blueprint的Flask URL路由不工作,返回404 http代码

Python 使用blueprint的Flask URL路由不工作,返回404 http代码,python,flask,Python,Flask,我正面临着一个关于flaskurl路由的问题;看来路线并没有如预期的那样工作 在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 in

我正面临着一个关于flaskurl路由的问题;看来路线并没有如预期的那样工作

  • 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>
    

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

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

    第二个问题是您在
    app.py
    中导入
    my_视图的方式。由于
    views.py
    app.py
    位于同一目录中,并且您正在该目录中启动flask应用程序,因此您可以执行以下操作:

    from views import my_view
    
    然而,你应该把你的应用程序结构化为一个整体

    第三期是烧瓶导入烧瓶
    中缺少的
    。也许你在发布代码时忽略了这一点

    我用上面的修复程序测试了你的代码,它正常工作


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

    元组可以。问题是
    ('GET')
    不是元组,而是字符串
    ('GET',)
    是一个元组。需要明确的是,当我在没有蓝图的情况下运行app.py,并将所有路由和业务逻辑保存在同一个代码文件app.py中时,它们都在工作,所以我相信装饰器、参数和业务代码不是问题所在,在测试之后,我只是将一些东西移到views.py,作为一个良好的项目结构并添加了蓝图,从那以后问题就开始了团队,有什么建议吗?同样,我们如何知道当这个端点被击中时发生了什么?无论如何,我们可以在代码中添加一些调试语句。
    from views import my_view