例如:应用程序的每个用户都有一些点,并且它们保存在数据库中(当然)
当用户访问页面/个人资料时,模板会向他显示{{ points }}
。
但是如果他点击一个按钮,我想减少一些用户点数(例如10个)。我认为这应该是这样的:
Template.html:
Your points: {{ current_user.points }} <a href="{{ url_for('index') }}" button type="submit" class="btn btn-success" name="reduce">Reduce it!</button></a>
但我怎样才能获得传递信号&#34;减少&#34;查看?
答案 0 :(得分:0)
您已获得所需的所有信息。您知道哪个用户点击了current_user
代理中的链接(我假设您因此使用了flask-login或flask-security)。因此,提交目标的路由只需要从数据库中获取用户点,调整它并提交它。
如果你正在使用像Flask-Sqlalchemy这样的东西,它可能就是:
@login_required
@app.route('/reduce/')
def reduce_points():
current_user.points -= 10
db.session.commit()
return 'Points Reduced!'
使用模板呈现指向{{ url_for('reduce_points') }}
的链接。
让我们假设您想要一个处理几个不同操作的视图 - 您可以为每个按钮创建一个表单,其中包含您想要的操作:
<form method='post' target="{{ url_for('actions') }}">
<input type="hidden" name="action" value="reduce"/>
<input type="submit" value="Reduce!"/>
</form>
然后你的应用程序的路径代码可以只查找名为action的表单元素 - 然后使用基于它的值的逻辑来决定要做什么。如果你正在处理表格,还要仔细阅读CSRF保护(Flask-WTF免费提供给你),保存用户意外点击按钮几次并将他们的帐户归零。