簡體   English   中英

if request.method == 'POST' and 'sub' in request.form: is not working in flask: if condition is not execution

[英]if request.method == 'POST' and 'sub' in request.form: is not working in flask: if condition is not executing

我正在使用 Flask 和 sqlalchemy 進行 CRUD 操作。 有兩個輸入字段。

  1. 主題和 2) 描述和一個添加按鈕。 用戶輸入值並將其添加到數據庫 (sqlite3)。 幸運的是,這是有效的。 甚至刪除工作。

但是更新一行不起作用。

我附上了我的Flask代碼。

@app.route('/update/<id>/', methods = ['GET','POST'])
def update(id):
    subj = ''
    descr = ''
    print("outside the if condition")
    if request.method == 'POST' and 'subb' and 'dess' in request.form:
        print("inside the if condition")
        subj = request.form.get('sub')
        print(subj)
        descr = request.form.get('desc')
        entry = Crud(subject = subj, description = descr)
        db.session.add(entry)
        db.session.commit()
    searchThisId = Crud.query.get(id)
    return render_template("update.html",searchThisId = searchThisId) 

HTML

{% extends 'base.html' %}
{% block title %} Update the details {% endblock %}

{% block contents %}
<div>
    <form method = 'POST', action = '/'>
        
        <input type = "text" name = "subb" value = {{ searchThisId.subject }}><br>
        
        <input type = "text" name = "dess" value = {{ searchThisId.description }}><br>

        <input type = "submit" value = "UPDATE">
    </form>
</div>
{% endblock %}

我沒有 Flask 設置,但我認為您的問題在這里:

if request.method == 'POST' and 'subb' and 'dess' in request.form:

這個語句是說“如果 request.method 是 POST,並且 'subb' 是真的,並且 'dess' 是 request.form 的一個元素(我相信這是一本字典——所以最后一部分總是返回 false。 )

request.form 是一本字典,您想檢查 'subb' 和 'dess' 是否都是該字典中的鍵,對嗎?

這應該有效:

if request.method == 'POST' and all(elem in request.form.keys() for elem in ['subb','dess'):

我像這樣修改了代碼,並且工作正常。

@app.route('/update/<id>/', methods = ['POST','GET'])
def update(id):
    searchThisId = Crud.query.get(id)
    if request.method == 'POST':
        searchThisId.subject = request.form['subb']
        searchThisId.description = request.form['dess']
        db.session.commit()
        return redirect(url_for('Index'))
    else:
        return render_template("update.html",searchThisId = searchThisId)

HTML

    <form method = 'POST', action = "/update/{{ searchThisId.id }}/">
        
        <input type = "text" name = "subb" value = {{ searchThisId.subject }}><br>
        
        <input type = "text" name = "dess" value = {{ searchThisId.description }}><br>

        <input type = "submit" value = "UPDATE">
    </form>

謝謝@MattBlaha 的幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM