2014-10-28 73 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

相關問題