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>
谁能帮我看看传递参数有什么问题吗?
因为你的蓝图中有 url_prefix
,这意味着系统正在寻找以该值开头的所有路由,即 /search
。看到这个 writeup
如果你的 Flask 路由处理程序是 /<search_key>
,这意味着 Flask 实际上期待 /search/<search_key>
类型的 url 但你的 url按钮只有 /search
。因此,您的应用程序中没有它的处理程序。
你应该试试这个
@search.route("/")
@search.route("/<search_key>")
def search_page(search_key=None):
以上将适用于 /search
即 @search.route("/") 并且也适用于 /search/abc
即 @search.route("/”)。但是当 search_key 是 None
时,您必须添加代码来处理
我正在尝试使用参数为其创建路由和方法。由于“在服务器上未找到请求的 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>
谁能帮我看看传递参数有什么问题吗?
因为你的蓝图中有
url_prefix
,这意味着系统正在寻找以该值开头的所有路由,即/search
。看到这个 writeup如果你的 Flask 路由处理程序是
/<search_key>
,这意味着 Flask 实际上期待/search/<search_key>
类型的 url 但你的 url按钮只有/search
。因此,您的应用程序中没有它的处理程序。你应该试试这个
@search.route("/")
@search.route("/<search_key>")
def search_page(search_key=None):
以上将适用于 /search
即 @search.route("/") 并且也适用于 /search/abc
即 @search.route("/