来自 HTML 表单的 Flask 请求返回无值,我该怎么办?

Posted

技术标签:

【中文标题】来自 HTML 表单的 Flask 请求返回无值,我该怎么办?【英文标题】:Request in Flask from a Form in HTML is returning None Value, What should I Do? 【发布时间】:2019-05-26 12:20:29 【问题描述】:

我在烧瓶中的请求没有任何价值。它返回 None 值。

我尝试过改变方法但没有用。

烧瓶代码:

@app.route("/login/user/book")
def searchbook():

    bookname=request.form.get("search")

    return render_template("message.html",heading=bookname ,message=" ")

网页:

% extends "layout.html" %

% block heading %Welcome to BookSarkar% endblock %

% block body %
<p>Welcome  name </p>

<form action=" url_for('searchbook') " method="get" class="form-group">
    <div class="form-group">
        <input type="text" name="search" class="form-control col-md-6 mt-5 mx-auto" placeholder="Search books">
        <p style="text-align:center;">
            <button type ="submit" class="btn btn-primary mt-2 mx-auto">Search</button>
        </p>
    </div>
</form>

<div class="fixed-top m-2">
<a class="btn btn-outline-primary" href=" url_for('logout') " role="button" style="float:right;">Log out</a>
</div>  
% endblock %

留言网页:

% extends "layout.html" %

% block heading % heading % endblock %

% block body %

 message 
<a class="btn btn-primary" href=" url_for('index') " role="button">Return to Home Page</a>

% endblock %

布局页面没有错误,因为所有其他页面都工作正常。我希望网页显示给定的输入,但它显示无

【问题讨论】:

在您的烧瓶代码中的return render_template("message.html",heading=bookname ,message=" ") 处放置一个断点并检查bookname 的值。是 None 还是已填充? @PeterDannemann 我是新手,不知道如何调试,这就是为什么我使用 return render_template("message.html",heading=bookname ,message=" ") 来测试是否它是 None 或已填充 好吧,只要把‘print(bookname)’放在那一行之前。当你提出请求时它会打印什么? 【参考方案1】:

request.form 包含通过postput 提交的值,而您的表单使用get。尝试使用request.args.get("search") 而不是request.form.get("search")

【讨论】:

以上是关于来自 HTML 表单的 Flask 请求返回无值,我该怎么办?的主要内容,如果未能解决你的问题,请参考以下文章

确定 Flask 请求是不是来自 JavaScript

Python/FLASK - html 表单返回字符串。如何检查它是不是包含数字?

flask学习笔记(-Web 表单)

如何在 Flask 上返回 400(错误请求)?

使用 Flask 从 HTML 表单发布对象数组? [复制]

烧瓶根据邮递员的邮寄请求返回 400