2013-12-24 4 views
-1

В моем приложении 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 правильно? Любые советы по этому поводу приветствуются.

+0

Я думаю, вы не должны использовать сеанс для этого, так как пользователи могут просто очистить сеанс. используйте для этого ip-адрес и сохраните его в хранилище данных/кеш. если он уже в нем, он не может голосовать. Также вы не можете быть уверены, что пользователь может проголосовать дважды. поскольку некоторые люди получают новый IP-адрес, если они снова подключаются к интернет-провайдеру. так что это не так просто. –

+0

Это не снаружи. Это внутри взгляда. У вас есть доступ к объекту запроса, поэтому у вас есть доступ к сеансу. Документы действительно объясняют, как получить доступ к сеансу из запроса. –

ответ

1

От Джанго Документация: How to use sessions

Django обеспечивает полную поддержку для анонимных сеансов. Сессионная структура позволяет хранить и извлекать произвольные данные для каждого посетителя. Он хранит данные на стороне сервера и абстрагирует отправку и получение файлов cookie.

Там вы можете найти:

  1. Использование кэшированных сеансов
  2. Использование сессий на основе файлов
  3. Использование куки на основе сеансов

Вы можете использовать куки для магазина, которые перечисляете пользователь проголосовал.

Смежные вопросы