2014-10-28 74 views
0

例如:应用程序的每个用户都有一些点,并且它们保存在数据库中(当然)如何从模板传递变量以在Flask中查看?

当用户访问页面/配置文件时,模板向他显示{{ 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> 

但我怎么能得到通过信号“减少”来查看?

回答

0

您已获得所有需要的信息。你知道哪个用户点击了current_user代理的链接(我假设你正在使用flask-login或flask-security)。所以作为提交目标的路由只需要从数据库中提取用户点,调整它并提交它。

如果你正在使用类似的烧瓶SQLAlchemy的它可能只是:

@login_required 
@app.route('/reduce/') 
def reduce_points(): 
    current_user.points -= 10 
    db.session.commit() 
    return 'Points Reduced!' 

随着模板渲染的链接{{ url_for('reduce_points') }}

比方说,你不是想要一个观点,即处理几个不同的actions--你可以为每个按键形式,所包含你想要的动作:

<form method='post' target="{{ url_for('actions') }}"> 
<input type="hidden" name="action" value="reduce"/> 
<input type="submit" value="Reduce!"/> 
</form> 

然后你的应用程序的途径代码可以只寻找称为行动的表单元素 - 然后使用基于其值的逻辑来决定做什么。如果您正在处理表单,请仔细阅读CSRF保护(Flask-WTF免费提供给您),保存用户意外地点击按钮几次并清空其帐户。

+0

谢谢,现在有用。 – bartezr 2014-10-28 21:15:13

相关问题