Flask蓝图和注册路径

Flask blueprint and registering path

我正在尝试使用参数为其创建路由和方法。由于“在服务器上未找到请求的 URL”,我遇到了一些错误。“

如果我不传递参数,一切正常。

app.py 有以下代码:

def create_app():

    app = Flask(__name__)
    app.secret_key = 'ytestsone'
    app.register_blueprint(auth, url_prefix='/')
    app.register_blueprint(search, url_prefix='/search')
    return app

Search.py 我有以下:

search = Blueprint("search", __name__, static_folder='static', template_folder='templates')

#@search.route("/") -->this works
@search.route("/<search_key>") --> this does not work
def search_page(search_key):    --> this does not work
#def search_page(): --> this works 
    print(request.form)
    return render_template("search.html", user=current_user)

在我的html下面有

<div class="col">
            <a class="btn btn-primary btn-lg" href="/search" role="button">Search Item</a>
        </div>

谁能帮我看看传递参数有什么问题吗?

  1. 因为你的蓝图中有 url_prefix,这意味着系统正在寻找以该值开头的所有路由,即 /search。看到这个 writeup

  2. 如果你的 Flask 路由处理程序是 /<search_key>,这意味着 Flask 实际上期待 /search/<search_key> 类型的 url 但你的 url按钮只有 /search。因此,您的应用程序中没有它的处理程序。

  3. 你应该试试这个

@search.route("/") 
@search.route("/<search_key>") 
def search_page(search_key=None):

以上将适用于 /search 即 @search.route("/") 并且也适用于 /search/abc 即 @search.route("/”)。但是当 search_key 是 None

时,您必须添加代码来处理