我正面临着烧瓶网址的问题;似乎路线没有按预期工作。
在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>
现在,在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)
现在,当我使用有效参数访问网址http://ip:port/index
或http://ip:port/key...
时,它会返回404,并显示消息“服务器上找不到请求的网址。如果您手动输入了网址,请请检查你的拼写然后重试。”我相信提到的路线不起作用。
答案 0 :(得分:3)
发现第一个问题是您的methods
参数。它需要一个列表/元组,但你传递一个字符串('GET')。更改为methods=('GET', )
。请注意'GET'之后的逗号。或者为了避免将来出现混淆,请使用methods=['GET']
第二个问题是my_view
中导入app.py
的方式。由于views.py
和app.py
位于同一目录中,并且您正在该目录中启动烧瓶应用,您可以这样做:
from views import my_view
但是,您应该将应用程序结构化为Python Package
第三个问题缺少from flask import Flask
。也许你在发布代码时忽略了这一点。
我使用上述修复程序测试了您的代码,它的工作原理应该如此。
编辑:感谢@dirn指出方法参数接受了元组。