尝试在烧瓶中使用POST时出现404

时间:2020-05-13 10:47:21

标签: 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=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),也不会返回405而是返回404

2 个答案:

答案 0 :(得分:0)

尝试在if request.method == "POST":函数中添加saveR

换句话说,应该像这样:

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'))

让我知道这是否有帮助。

答案 1 :(得分:0)

浏览器将(除POST请求之外)尝试发出GET请求。

只需将GET添加到端点的方法:

@app.route("/send", methods=["POST", "GET"])
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'))