qq_37065620 2018-10-13 15:06 采纳率: 0%
浏览 1863
已结题

python的flask-web程序出错

1.python的flask-web程序不知道错在哪里,运行报错:The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.?

from flask import Flask
from flask import request
from recommend import Recommend2
import json
import glob
import os.path

configuration={
"DATA_PATH":"data",
"PORT":8080
}

#LOAD THE DATA
JSON_LIST = []
paths = glob.glob(
os.path.join(configuration["DATA_PATH"],"*.txt")
)
for path in paths:
fp = open(path,"r")
JSON_LIST.append(
json.load(fp)
)
fp.close()

def filter_json(json_list:list):
"""
过滤每一条数据,用于测试集合
保留title
:param json_list:电影数据
:return: 过滤后的结果
"""
res = []
def func(inf:dict,json,key:str):
"""
对于 A/B/C这样在同一个标签下有多个属性的进行过滤
:param inf: 字典
:param json: 需要过滤的单个json对象
:return:
"""
if key == "title":
info["title"]=json["title"]
return
ks = j.get(key, "")
k_l = ks.split("/")
for k_i in range(len(k_l)):
# print(ty_l[t_i])
info["%s%s" % (key,k_i + 1)] = k_l[k_i]

for j in json_list:
    info = dict()
    info["title"] = j.get("title")
    for k in j :
        if k not in  ["comment_list","date","runtime"]:
            func(info,j,k)
    res.append(info)
return  res

print(filter_json(JSON_LIST))

app = Flask(__name__)
system = Recommend2(7*24*3600)

@app.route("/recommend/get",methods=['GET'])
def get():
"""
获取推荐结果
:return: 推荐结果
"""
test_set=filter_json(JSON_LIST)
res = system.result(test_set,5)
def _filter(j):
"""
将comment_list弄成字符串
"""
nj = j.copy()
nj["comment_list"] = "|".join(nj["comment_list"])
return nj
return json.dumps(
[ _filter(JSON_LIST[i]) for i in res]
)

@app.route("/recommend/put",methods=["GET"])
def put():
"""
提取数据再学习
:return:
"""
movie_name = request.args.get("moviename",None)
comment = request.args.get("comment",None)
if (not movie_name) or (not comment):
return json.dumps({"sta":"failed"})
print(movie_name)
if comment == "good":
temp = [ filter_json([x])[0] for x in JSON_LIST if x.get("title","") == movie_name ]
system.learn(temp[0])
return json.dumps({"sta":"succeed"})

@app.route("/recommend/info")
def get_info():
return json.dumps(system.getLike())

if name == "__main__":
app.run(port=configuration["PORT"],debug=True)

  • 写回答

1条回答 默认 最新

  • qq_37065620 2018-10-13 15:09
    关注

    代码格式有点问题,下面是正确代码
    from flask import Flask
    from flask import request
    from recommend import Recommend2
    import json
    import glob
    import os.path

    configuration={
    "DATA_PATH":"data",
    "PORT":5000
    }

    #LOAD THE DATA
    JSON_LIST = []
    paths = glob.glob(
    os.path.join(configuration["DATA_PATH"],"*.txt")
    )
    for path in paths:
    fp = open(path,"r")
    JSON_LIST.append(
    json.load(fp)
    )
    fp.close()

    def filter_json(json_list:list):
    """
    过滤每一条数据,用于测试集合
    保留title
    :param json_list:电影数据
    :return: 过滤后的结果
    """
    res = []
    def func(inf:dict,json,key:str):
    """
    对于 A/B/C这样在同一个标签下有多个属性的进行过滤
    :param inf: 字典
    :param json: 需要过滤的单个json对象
    :return:
    """
    if key == "title":
    info["title"]=json["title"]
    return
    ks = j.get(key, "")
    k_l = ks.split("/")
    for k_i in range(len(k_l)):
    # print(ty_l[t_i])
    info["%s%s" % (key,k_i + 1)] = k_l[k_i]

    for j in json_list:
        info = dict()
        info["title"] = j.get("title")
        for k in j :
            if k not in  ["comment_list","date","runtime"]:
                func(info,j,k)
        res.append(info)
    return  res
    

    print(filter_json(JSON_LIST))

    app = Flask(__name__)
    system = Recommend2(7*24*3600)

    @app.route("/recommend/get",methods=['GET'])
    def get():
    """
    获取推荐结果
    :return: 推荐结果
    """
    test_set=filter_json(JSON_LIST)
    res = system.result(test_set,5)
    def _filter(j):
    """
    将comment_list弄成字符串
    """
    nj = j.copy()
    nj["comment_list"] = "|".join(nj["comment_list"])
    return nj
    return json.dumps(
    [ _filter(JSON_LIST[i]) for i in res]
    )

    @app.route("/recommend/put",methods=["GET"])
    def put():
    """
    提取数据再学习
    :return:
    """
    movie_name = request.args.get("moviename",None)
    comment = request.args.get("comment",None)
    if (not movie_name) or (not comment):
    return json.dumps({"sta":"failed"})
    print(movie_name)
    if comment == "good":
    temp = [ filter_json([x])[0] for x in JSON_LIST if x.get("title","") == movie_name ]
    system.learn(temp[0])
    return json.dumps({"sta":"succeed"})

    @app.route("/recommend/info")
    def get_info():
    return json.dumps(system.getLike())

    if name == "__main__":
    app.run(port=configuration["PORT"],debug=True)

    评论

报告相同问题?

悬赏问题

  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
  • ¥20 matlab yalmip kkt 双层优化问题
  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体
  • ¥88 实在没有想法,需要个思路
  • ¥15 MATLAB报错输入参数太多