В моем приложении Django нет пользовательских логинов. Любой может получить доступ к приложению и голосовать за разные списки песен. Я хочу, чтобы при голосовании пользователя пользователю не разрешалось голосовать снова в этом списке.Использование сеанса Django вне поля зрения
Вот мой AJAX код
ajax.py
from django.contrib.sessions.models import Session
s = SessionStore()
@dajaxice_register
def update_disable(request):
#updates song votes and disables all vote buttons on page
s['can_vote'] = False
s.save()
return dajax.json()
Мне нужно, чтобы получить session_key я думаю, чтобы сделать эту работу. Как мне это получить? Документация не совсем понятна.
Это то, что я делаю в HTML
{% if perms.hunt.can_vote %}
<button type="button" class="btn btn-default btn-custom vote" onclick="update();">Vote as Favourite</button>
{% else %}
<button type="button" class="btn btn-default btn-custom vote" disabled="disabled">Vote as Favourite</button>
{% endif %}
ли я приближался к концепции Djnago Session правильно? Любые советы по этому поводу приветствуются.
Я думаю, вы не должны использовать сеанс для этого, так как пользователи могут просто очистить сеанс. используйте для этого ip-адрес и сохраните его в хранилище данных/кеш. если он уже в нем, он не может голосовать. Также вы не можете быть уверены, что пользователь может проголосовать дважды. поскольку некоторые люди получают новый IP-адрес, если они снова подключаются к интернет-провайдеру. так что это не так просто. –
Это не снаружи. Это внутри взгляда. У вас есть доступ к объекту запроса, поэтому у вас есть доступ к сеансу. Документы действительно объясняют, как получить доступ к сеансу из запроса. –