(Python) Flask - request.args.get 返回 NoneType

2024-04-01

我需要完成这个网站的就是让它抓住n and s来自输入的值。 但是执行时request.get.args每次都返回 None 这是代码:

my_website.py:

import sqlite3
from flask import Flask,render_template, url_for, redirect, request


app = Flask(__name__)
conn = sqlite3.connect('shoes.db', check_same_thread=False)
c = conn.cursor()

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

    if request.method == 'GET':
        return render_template('main.html')

    elif request.method == 'POST':
        return redirect(url_for('search'))


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

    if not request.args.get("n"):           
        raise RuntimeError("missing n")

    if not request.args.get("s"):
        raise RuntimeError("missing s")

    name = request.args.get('n')
    size = request.args.get('s')
    c.execute("SELECT * FROM shoes WHERE name LIKE ? AND sizes LIKE ? ORDER BY price",
                    ('%'+name+'%','%'+size+'%'))

    p = c.fetchall()

    url = [p[i][0] for i in range(len(p))]
    names = [p[i][1] for i in range(len(p))]
    prices = [p[i][2] for i in range(len(p))]
    sizes = [p[i][3] for i in range(len(p))]
    shoe_type = [p[i][4] for i in range(len(p))]

    return render_template('search.html' , url=url, names=names, prices=prices,
                           sizes=sizes, shoe_type=shoe_type)


if __name__ == '__main__':
    app.run(debug=True)

main.html:

{% extends "layout.html" %}
{% block content %}

<form action = "{{ url_for('main') }}" class="form" method = "POST" >
    <div>
        <h1>Soccer Shoes Finder</h1>
        <div class="line-separator"></div>
        <div>
            <div class="container-fluid">
                <input name = "n" type="text" placeholder="Name"/>
                <input name = "s" type="text" placeholder="Size"/>
                <button class="glyphicon glyphicon-search" aria-hidden="true"></button>
            </div>
        </div>
</form>

{% endblock %}

这是我收到的错误:

RuntimeError: missing n

任何意见,将不胜感激。 谢谢。


request.args保存值在请求参数。另一方面,您的表单正在 POST 正文中发送值。

Use the request.form mapping http://flask.pocoo.org/docs/0.12/api/#flask.Request.form相反,或使用request.values http://flask.pocoo.org/docs/0.12/api/#flask.Request.values,它结合了request.form and request.args.

或者,更改您的表格method to GET让浏览器将参数放入查询字符串中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

(Python) Flask - request.args.get 返回 NoneType 的相关文章

随机推荐