【问题标题】:Python @app.route("/custom"), return page doesn't workPython @app.route("/custom"),返回页面不起作用
【发布时间】:2017-06-18 14:47:03
【问题描述】:

我正在将 Pythonanywhere.com 与 Flask 一起使用。我正在将此代码用于 html:

    <div class="main-content">

        <form class="main_page" method="POST" action=".">

            <div class="form-title-row">
                <h1>Aankomende Games Quiz</h1>
            </div>

            <div class="form-row">
                <label>
                    <span>Jouw naam:</span>
                    <input type="text" name="naam">
                </label>
            </div>

            <div class="form-row">
                <label>
                    <span>Welke game heeft géén multiplayer?</span>
                    <select name="geen_multiplayer">
                        <option selected disabled>Maak een keuze</option>
                        <option>Red Dead Redemption 2</option>
                        <option>Destiny 2</option>
                        <option>South Park: The Fractured but Whole</option>
                        <option>FIFA 18</option>
                    </select>
                </label>
            </div>


            <div class="form-row">
                <label>
                    <span>Welke game is door Rockstar Games gemaakt?</span>
                    <select name="gemaakt_rockstar">
                        <option selected disabled>Maak een keuze</option>
                        <option>Star Wars Battlefront II</option>
                        <option>The Elder Scrolls Online: Morrowind</option>
                        <option>Destiny 2</option>
                        <option>Red Dead Redemption 2</option>
                    </select>
                </label>
            </div>

            <div class="form-row">
                <label>
                    <span>Wat is géén shooter?</span>
                    <select name="geen_shooter">
                        <option selected disabled>Maak een keuze</option>
                        <option>Red Dead Redemption 2</option>
                        <option>Destiny 2</option>
                        <option>Call of Duty: WWII</option>
                        <option>Star Wars Battlefront II</option>
                    </select>
                </label>
            </div>

            <div class="form-row">
                <label>
                    <span>Welke game wordt alleen op PS4 uitgebracht?</span>
                    <select name="alleen_ps4">
                        <option selected disabled>Maak een keuze</option>
                        <option>MotoGP™17</option>
                        <option>Crash Bandicoot N. Sane Trilogy</option>
                        <option>Star Wars Battlefront II</option>
                        <option>Destiny 2</option>
                    </select>
                </label>
            </div>

            <div class="form-row">
                <label>
                    <span>Welke game heeft splitscreen?</span>
                    <select name="heeft_splitscreen">
                        <option selected disabled>Maak een keuze</option>
                        <option>MotoGP™17</option>
                        <option>Dirt 4</option>
                        <option>Red Dead Redemption 2</option>
                        <option>The Elder Scrolls Online: Morrowind</option>
                    </select>
                </label>
            </div>

            <div class="form-row">
                <label>
                    <span>Welke game is door Codemasters gemaakt?</span>
                    <select name="gemaakt_codemasters">
                        <option selected disabled>Maak een keuze</option>
                        <option>South Park: The Fractured but Whole</option>
                        <option>FIFA 18</option>
                        <option>Crash Bandicoot N. Sane Trilogy</option>
                        <option>Dirt 4</option>
                    </select>
                </label>
            </div>

            <div class="form-row">
                <label>
                    <span>Welke game speelt zich af in het wilde westen?</span>
                    <select name="wilde_westen">
                        <option selected disabled>Maak een keuze</option>
                        <option>Dirt 4</option>
                        <option>Call of Duty: WWII</option>
                        <option>Red Dead Redemption 2</option>
                        <option>The Elder Scrolls Online: Morrowind</option>
                    </select>
                </label>
            </div>

            <div class="form-row">
                <label>
                    <span>Welke game heeft 'Sports' niét als genre</span>
                    <select name="niet_sports">
                        <option selected disabled>Maak een keuze</option>
                        <option>FIFA 18</option>
                        <option>Dirt 4</option>
                        <option>Destiny 2</option>
                        <option>MotoGP™17</option>
                    </select>
                </label>
            </div>

            <div class="form-row">
                <label>
                    <span>Welke game is voor 18 jaar en ouder?</span>
                    <select name="voor_18">
                        <option selected disabled>Maak een keuze</option>
                        <option>The Elder Scrolls Online: Morrowind</option>
                        <option>Star Wars Battlefront II</option>
                        <option>Destiny 2</option>
                        <option>Crash Bandicoot N. Sane Trilogy</option>
                    </select>
                </label>
            </div>

            <div class="form-row">
                <label>
                    <span>Welke game komt in september 2017 uit?</span>
                    <select name="september_2017">
                        <option selected disabled>Maak een keuze</option>
                        <option>Red Dead Redemption 2</option>
                        <option>South Park: The Fractured but Whole</option>
                        <option>Call of Duty: WWII</option>
                        <option>FIFA 18</option>
                    </select>
                </label>
            </div>

            <div class="form-row">
                    <button type="submit" name="invoer" value="">Invoeren</button>
            </div>
        </form>
    </div>

</body>

我正在使用这个 python 代码:

@app.route("/quiz", methods=["GET", "POST"])

def quiz():

    if request.method == "GET":
        return render_template("quiz_page.html")

    score = 0


    if (request.form["geen_multiplayer"] == "South Park: The Fractured but Whole"):
        score += 1

    if (request.form["gemaakt_rockstar"] == "Red Dead Redemption 2"):
        score += 1

    if (request.form["geen_shooter"] == "Red Dead Redemption 2"):
        score += 1

    if (request.form["alleen_ps4"] == "Crash Bandicoot N. Sane Trilogy"):
        score += 1

    if (request.form["heeft_splitscreen"] == "MotoGP™17"):
        score += 1

    if (request.form["gemaakt_codemasters"] == "Dirt 4"):
        score += 1

    if (request.form["wilde_westen"] == "Red Dead Redemption 2"):
        score += 1

    if (request.form["niet_sports"] == "Destiny 2"):
        score += 1

    if (request.form["voor_18"] == "The Elder Scrolls Online: Morrowind"):
        score += 1

    if (request.form["september_2017"] == "FIFA 18"):
        score += 1

    if request.method == "POST":
        return render_template("quiz_page.html")

当我点击提交按钮时,它返回“Bad Request 浏览器(或代理)发送了一个该服务器无法理解的请求。”所以当我点击我的 domainname.com/quiz 上的按钮时就会发生这种情况。我注意到当我点击按钮时,后面的“/quiz”域名消失了。我做错了什么?

【问题讨论】:

  • 在您的源代码中,装饰器和函数之间是否还有空行?

标签: python flask pythonanywhere


【解决方案1】:

将action="." 更改为action="#"。

action="." 导致请求被发送到当前 url 的上一级,这就是 /quiz 消失的原因。

【讨论】:

  • 另一种选择——使用@app.route("/quiz/", methods=["GET", "POST"])(注意“quiz”后面的斜杠),然后你可以使用action="."。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-19
  • 2021-09-17
  • 1970-01-01
  • 2013-03-12
  • 2020-10-03
  • 2015-09-24
  • 1970-01-01
相关资源
最近更新 更多