【发布时间】:2020-12-29 14:13:15
【问题描述】:
我有一个 HTML 下拉表单不起作用,所以我只是将其更改为按钮进行测试(我对 Flask 和 python 非常陌生,所以我正在试验)。
我试图让用户选择按添加时间、名称等对帖子进行排序。目前我只是在试验这三个,它们是按钮形式(当我弄清楚如何):
<form action="{{ url_for('filters') }}" name="sort" method="POST">
<button type="submit" id="latest" class="btn">Latest</button>
<button type="submit" id="oldest" class="btn">Oldest</button>
<button type="submit" id="names" class="btn">Name</button>
</form>
这一切都在一个名为:questions.html的页面上
过滤器应用程序是: @app.route("/filters", methods=["GET", "POST"])
def filters():
sort = request.form.get("sort")
if sort == "oldest":
questions = mongo.db.questions.find().sort("added_on", 1)
if sort == "latest":
questions = mongo.db.questions.find().sort("added_on", -1)
if sort == "names":
questions = mondo.db.questions.find().sort("created_by", 1)
return render_template("questions.html", questions=questions)
我已经在提出问题,并且通过以下方式将它们全部正确显示:
@app.route("/get_questions")
def get_questions():
questions = mongo.db.questions.find().sort("added_on", -1)
return render_template("questions.html", questions=questions)
但是当我尝试使用按钮调用排序时,我得到了这个错误:
UnboundLocalError: local variable 'questions' referenced before assignment
它调用它到第 40 行,即:过滤器函数中的return render_template("questions.html", questions=questions)。
那么,我做错了什么?我需要做些什么才能将用户排序选项放入下拉列表中以便它们起作用?
非常感谢:)
【问题讨论】:
标签: python mongodb sorting flask jinja2