Flask 问题:如果 request.form["action"] == "Some Button":在 PythonAnywhere 中抛出语法错误

问题描述 投票:0回答:1

我正在尝试有一个简单的表单,用户可以在其中一次在文本框中输入几项内容,准备好后,点击一个按钮以对他们输入的数据运行一个功能。

这是 flask_app.py 中的整个页面

@app.route("/actors", methods=["GET", "POST"])
def actors():
    if "actors" not in session:
        session["actors"] = []
    if "characters" not in session:
        session["characters"] = []
    errors = ""
    if request.method == "POST":
        try:
            session["actors"].append(str(request.form["Actor"]))
            session.modified = True
            session["characters"].append(str(request.form["Character"]))
            session.modified = True

        if request.form["action"] == "Highlight Scripts":
            input_file = request.files["input_file"]
            actors = session["actors"]
            characters = session["characters"]
            for i in range(len(actors)):
                response = highlight(actors[i], characters[i])
                response.headers["Content-Disposition"] = "attachment; filename=result.pdf"
                return response
            
            session["actors"].clear()
            session.modified = True
            session["characters"].clear()
            session.modified = True
            return '''
                <html>
                    <body>
                        <p>{result}</p>
                        <p><a href="/actors">Click here to submit a new script</a>
                    </body>
                </html>
            '''.format(result=result)

    if len(session["actors"]) == 0:
        actors_so_far = ""
    else:
        actors_so_far = "<p>Actors so far:</p>"
        for a in session["actors"]:
            actors_so_far += "<p>{}</p>".format(a)

    return '''
        <html>
            <body>
                {actors_so_far}
                {errors}
                <p>Enter an actor:</p>
                <form method="post" action="/actors">
                    <p><input name="actor" /></p>
                    <p><input type="submit" name="action" value="Add another" /></p>
                    <p><input type="submit" name="action" value="Highlight Scripts" /></p>
                </form>
            </body>
        </html>

在哪里

if request.form["action"] == "Highlight Scripts":

给出语法错误。

不确定如何进行并感谢任何建议!

这是从 this PythonAnywhere tutorial 中提取/复制的,我们使用基本上完全相同的代码来获取一堆用户提交的#s

python flask syntax pythonanywhere
1个回答
0
投票

正如@ewokx 评论的那样;

你没有

except
try
:

如果你不想改变你的代码,你可以做 except:pass (尽管不推荐这样做)

if request.method == "POST":
        try:
            session["actors"].append(str(request.form["Actor"]))
            session.modified = True
            session["characters"].append(str(request.form["Character"]))
            session.modified = True
        except:
            pass

        if request.form["action"] == "Highlight Scripts":
            input_file = request.files["input_file"]
            actors = session["actors"]
            characters = session["characters"]
            for i in range(len(actors)):
                response = highlight(actors[i], characters[i])
                response.headers["Content-Disposition"] = "attachment; filename=result.pdf"
                return response

文档链接:https://docs.python.org/3/tutorial/errors.html

© www.soinside.com 2019 - 2024. All rights reserved.