我有一个带有多个民意调查的Django应用程序。没有选项可以在我的网站上注册为用户。我想让访问者每七天只对一次特定民意调查投票。
我在 ajax.py 文件中更改访问者权限的方式
@dajaxice_register
def update_disable(request, song_pk):
#update votes
request.session['has_voted'] = True
request.session.set_expiry(timezone.now() + timedelta(days=7))
return dajax.json()
我正在禁用模板中的按钮
{% if perms.hunt.has_voted %}
<button type="button" class="btn btn-default" disabled="disabled">
Vote as Favourite
</button>
{% else %}
<button type="button" class="btn btn-default" onclick="update(this);">
Vote as Favourite
</button>
{% endif %}
但即使投票后我的代码也会转到模板中的else部分。这有什么不对?
答案 0 :(得分:0)
你错误的是你正在将标志保存到会话中,但出于某种原因,你试图阅读perms.hunt.has_voted
(如果用户搜索有权投票,则进行检查,但是不是如果他已投票或不投票..),这是来自权限应用程序的值。它与会话无关。
您需要从模板中访问会话值:
{% if request.session.has_voted %}
...
这将检查当前登录的用户是否已经投票,因此如果has_voted
为False
或,则该密钥不存在,则用户将能够投票。