Flask 搜索引擎

Flask 搜索引擎,flask,mongoengine,Flask,Mongoengine,到处搜寻/修补都没有用 我使用的是flask,mongoengine,mongodb版本2.4 我试图查询我的一个收藏(帖子,特别是通过标签) 以下是我的路线: @notes_app.route('/search', methods= ["post"]) @login_required def search(): query = request.form.get('query') return redirect(url_for('search_results', query=qu

到处搜寻/修补都没有用

我使用的是flask,mongoengine,mongodb版本2.4

我试图查询我的一个收藏(帖子,特别是通过标签)

以下是我的路线:

@notes_app.route('/search', methods= ["post"])
@login_required
def search():
    query = request.form.get('query')
    return redirect(url_for('search_results', query=query)

@notes_app.route('/search_results/<query>', methods=["post"])
@login_required
def search_results(query):
    posts = models.Post.objects(tag=query)
    return render_template('search_results.html', posts=posts)

非常感谢您的建议,谢谢

我相当肯定“methods”参数区分大小写。我有一个类似的应用程序,我的代码有所有caps方法=['GET','POST'],就像flask文档一样。这可以解释为什么您的回溯在BuildError中显示为“None”

此外,您的查询变量看起来像是在显示整个键值对;如果这是应用程序逻辑的一部分,那没关系,但我的如下所示:

query = request.args.get('query')

因此,在我的例子中,查询变量只是字符串值,而不是整个键值对。(同样,您的应用程序逻辑可能设置不同。)此外,如果您想使用“请求”,您需要从flask导入它。

在蓝图内重定向时,您需要在调用
url\u时包含蓝图的名称

如果使用定义如下的蓝图

notes_app = Blueprint('notes_app', __name__, template_folder='templates')
你需要使用

@notes_app.route('/search', methods=['POST'])
@login_required
def search():
    query = request.form.get('query')
    return redirect(url_for('notes_app.search_results', query=query)

notes\u app
是否是
Flask
Blueprint
?@dim Blueprint的一个实例,与这两个建议非常相似。没有修复,当我将query=request.form.get('query')更改为query=request.args.get('query')时,我收到了错误:BuildError:('search_results',{},None)。
notes_app = Blueprint('notes_app', __name__, template_folder='templates')
@notes_app.route('/search', methods=['POST'])
@login_required
def search():
    query = request.form.get('query')
    return redirect(url_for('notes_app.search_results', query=query)