Python 404尝试使用烧瓶中的柱时
我有一个简单的烧瓶应用程序与此代码Python 404尝试使用烧瓶中的柱时,python,flask,Python,Flask,我有一个简单的烧瓶应用程序与此代码 from flask import Flask, redirect, render_template, request, url_for import json app = Flask(__name__) def sortBy(a): return a['score'] def sort(): f=open('/home/davisbanana/mysite/templates/scores.txt', 'r') resList=
from flask import Flask, redirect, render_template, request, url_for
import json
app = Flask(__name__)
def sortBy(a):
return a['score']
def sort():
f=open('/home/davisbanana/mysite/templates/scores.txt', 'r')
resList=json.load(f)
f.close();
res = sorted(resList, key=sortBy)
return res
@app.route("/send", methods=["POST"])
def saveR():
f=open('/home/davisbanana/mysite/templates/scores.txt', 'r')
resList=json.load(f)
f.close();
resList.append(request.json)
f=open('/home/davisbanana/mysite/templates/scores.txt', 'w')
json.dump(resList,f)
f.close()
return redirect(url_for('index'))
@app.route("/", methods=["GET"])
def index():
scores = sort()
if request.method == "GET":
return render_template("index.html", scores=scores)
return redirect(url_for('index'))
即使尝试直接转到post方法(mysite.com/send),它也会返回404,而不是返回405。如果request.method==“post”,请尝试在
保存程序中添加:
换句话说,应该是这样的:
def saveR():
if request.method == "POST":
f=open('file.json', 'r')
resList=json.load(f)
f.close();
resList.append(request.json)
f=open('file.json', 'w')
json.dump(resList,f)
f.close()
return redirect(url_for('index'))
让我知道这是否有帮助。浏览器将(除了POST
请求之外)尝试发出GET
请求
只需将GET
添加到端点的方法中:
@app.route(“/send”,methods=[“POST”,“GET”])
def saveR():
f=打开('/home/davisbanana/mysite/templates/scores.txt',r')
resList=json.load(f)
f、 close();
append(request.json)
f=打开('/home/davisbanana/mysite/templates/scores.txt',w')
json.dump(resList,f)
f、 关闭()
返回重定向(url_for('index'))
更改代码后,它仍然会发出404。请尝试使用app运行应用程序。运行(debug=True)
,然后它会在访问页面时告诉您错误。请分享错误截图对不起,我是调试新手,我该怎么做?当我将该行添加到我的应用程序时,我不确定如何访问调试信息。只需使用app.run(debug=True)
执行该应用程序,然后访问您的页面。您将在此处显示错误日志您不需要添加检查以查看请求是否为post请求。顺便说一下,在您的index()
函数中。。。您应该将scores=sort()
更改为scores.sort()
您如何向send
路线发帖?为什么要从post方法重定向而不是处理响应?当您发出post请求时,您的应用程序会抛出哪些错误?尝试直接进入页面是一个get请求,所以不起作用。我也这么想,但即使添加了get方法,它仍然会将我指向404。否。如果操作正确,post请求不应尝试发出get请求