【问题标题】:New to python and CS. SQlite, flaskpython和CS的新手。 SQLite,烧瓶
【发布时间】:2017-04-02 03:52:11
【问题描述】:

我是 python 和 CS 的新手,所以这个问题可能有点太简单了。感谢您的帮助,我遇到了一个错误:

错误请求

浏览器(或代理)发送了此服务器无法理解的请求。

实现新的html模板和python函数后:

@app.route("/register", methods=["GET", "POST"])
def register():
    """Register user."""

    session.clear()

    if request.form["name"] == "" or request.form["password"] == "":
        return render_template("apology.html")
    elif request.form["password"] != request.form["confirmation"]:
        return render_template("apology.html")
    hash = pbkdf2_sha256.hash("password")

    do.execute("INSERT INTO finance (name, password) VALUES(:name, :password)",
        name=request.form.get["name"], hash=hash)

    session["user_id"] = rows[0]["id"]

    return redirect(url_for("index"))

{% extends "layout.html" %}

{% block title %}
    Register
{% endblock %}

{% block main %}
    <form action="{{ url_for('register') }}" method="post">
        <fieldset>
            <div class="form-group">
                <input autocomplete="off" autofocus class="form-control" name="username" placeholder="Username" type="text"/>
            </div>
            <div class="form-group">
                <input class="form-control" name="password" placeholder="Password" type="password"/>
            </div>
            <div class="form-group">
                <input class="form-control" name="confirmation" placeholder="Confirm Password" type="password"/>
            </div>
            <div class="form-group">
                <button class="btn btn-default" type="submit">Register</button>
            </div>
        </fieldset>
    </form>
{% endblock %}

【问题讨论】:

  • 启用debug mode 后,您应该能够获得更详细的错误描述。

标签: python html sqlite flask


【解决方案1】:

首先您应该检查请求类型是否为“POST”,然后检查所有条件。执行以下操作以解决问题:

@app.route("/register", methods=["GET", "POST"])
def register():
"""Register user."""

session.clear()
if request.method == 'POST':
    if request.form["name"] == "" or request.form["password"] == "":
        return render_template("apology.html")
    elif request.form["password"] != request.form["confirmation"]:
        return render_template("apology.html")
    hash = pbkdf2_sha256.hash("password")

    do.execute("INSERT INTO finance (name, password) VALUES(:name, :password)",
    name=request.form.get["name"], hash=hash)

    session["user_id"] = rows[0]["id"]
    return redirect(url_for("index"))

else: 
    // you can render the template to be shown for registration.

【讨论】:

    猜你喜欢
    • 2018-05-24
    • 1970-01-01
    • 1970-01-01
    • 2015-04-09
    • 1970-01-01
    • 2014-02-27
    • 1970-01-01
    • 1970-01-01
    • 2018-09-10
    相关资源
    最近更新 更多