使用Django Sessions更改访客权限

时间:2013-12-29 20:54:51

标签: python django django-sessions

我有一个带有多个民意调查的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部分。这有什么不对?

1 个答案:

答案 0 :(得分:0)

你错误的是你正在将标志保存到会话中,但出于某种原因,你试图阅读perms.hunt.has_voted(如果用户搜索有权投票,则进行检查,但是不是如果他已投票或不投票..),这是来自权限应用程序的值。它与会话无关。

您需要从模板中访问会话值:

{% if request.session.has_voted %}
...

这将检查当前登录的用户是否已经投票,因此如果has_votedFalse ,则该密钥不存在,则用户将能够投票。