Почему я получаю TypeError: объект типа 'NoneType' не имеет ошибки len () (практически скопированный код из рабочей части моего кода) - PullRequest
0 голосов
/ 20 марта 2020

Я свободен sh во всем этом программировании. В настоящее время я работаю над flask, python, проектом SQLite. У меня была настроена форма редактирования, чтобы редактировать список, опубликованный пользователем. Это работало отлично. Затем я скопировал этот код, чтобы создать для него форму редактирования информации о пользователе, и теперь я получаю TypeError: объект типа 'NoneType' не имеет len () с практически тем же кодом.

HTML код , Этот код находится внутри модального, если это что-то значит.

<form action="/edituserinfo" method="post">
                        <label for="name" style="float:left">Name:</label><br />
                        <input class="form-control" name="name" style="width:100%" placeholder="{{ user[0]['username'] }}">
                        <label for="email" style="float:left">Email:</label><br />
                        <input class="form-control" name="email" style="width:100%" placeholder="{{ user[0]['email'] }}">
                        <label for="city" style="float:left">City:</label><br />
                        <input class="form-control" name="city" style="width:100%" placeholder="{{ user[0]['city'] }}">
                    <button type="submit" class="btn btn-lg btn-success btn-block">SAVE!</button>
                </form>

Вот мой python код.

@app.route("/edituserinfo", methods=["GET", "POST"])
@login_required
def edituserinfo():

    if request.method == "POST":
        user = session["user_id"]
        column = ["username", "email", "city"]
        for title in column:
            if len(request.form.get(title)) != 0:
                value = request.form.get(title)
                db.execute("UPDATE users SET %s = :edit WHERE id = :id" %(title), {"edit":value, "id":user})
                db.commit()
        return redirect("/account")

    else:
        return redirect("/account")

Любая помощь, совет будет оценен !! Спасибо!

1 Ответ

0 голосов
/ 20 марта 2020

Ошибка возникает из-за того, что request.form.get("username") возвращает None.

Это потому, что "username" не является одним из элементов формы в HTML, который вы показываете - я думаю, вы хотите "name", т.е.

column = ["name", "email", "city"]
...