首页 > 解决方案 > 表单输入返回无

问题描述

我想从我的 /user/conference uri 中获取输入。

这是我的控制器:

    @main.route('/user/conference', methods=["POST", "GET"])
    @login_required
    def user_search_conference():
        user = []
        conferences = []
        tags = []
        name = request.form.get('name')
        print(name)
        if name != "":
            user = db.session.query(UsersInfo).filter(
                UsersInfo.name == name).one()
            conferences = db.session.query(Conference).filter(
                Conference.creatoruser == user.authenticationid).all()
        else:
            conferences = db.session.query(Conference).all()
    
        return render_template('search_conference.html', conferences=conferences, len=len(conferences))

这是我的html表单:

    <div>
            <form method="POST" action="/user/conference">
                <div class="field">
                    <div class="control">
                        <input class="input is-large" type="text" name="name" placeholder="Conference Host">
                    </div>
                </div>
    
                <button class="button is-block is-info is-large is-fullwidth">Search</button>
            </form>
        </div>

我添加了 print 进行调试,并且 name 变量返回 None ,因为我的数据库无法响应。为什么表格没有给我?

标签: pythonhtmlpython-3.xflask

解决方案


我认为你的问题在这里

<input class="input is-large" type="text" name="name" placeholder="Conference Host">

这是缺少id属性。所以将此行更改为

<input class="input is-large" type="text" name="name" id="name" placeholder="Conference Host">

它应该工作。

原因是该属性name仅用于识别表单input字段的字段,即仅在浏览器端。但是该id属性包含在对服务器的请求中。所以你似乎和这个用户有同样的问题。


推荐阅读