Сессии django, чтобы запретить пользователю многократное голосование
views.py
def like(request,option="food",restaurant = 1):
if request.is_ajax:
rest = 'rest'
like = '%s-like' % str(option)
if restaurant in request.session:
if like not in request.session[restaurant]:
request.session[restaurant][like] = str(like)
else:
return HttpResponse('warning')
if restaurant not in request.session:
request.session[restaurant] = restaurant
r = Restaurant.objects.get(pk=restaurant)
if option == "food":
r.food_likes +=1
r.save()
return HttpResponse(str(r.food_likes))
elif option=="service":
r.service_likes +=1
r.save()
return HttpResponse(str(r.service_likes))
elif option == "ambience":
r.ambience_likes +=1
r.save()
return HttpResponse(str(r.ambience_likes))
else:
return redirect(request.META.get('HTTP_REFERER'))
ошибка
'unicode' object does not support item assignment
линия
request.session[restaurant][like] = str(like)
сомнение
У меня проблема при установке ключа сеанса с использованием переменной строки, как я должен установить ключ сеанса "как" внутри "ресторана" ключ??, пожалуйста, помогите
1 ответ
Сначала создайте пустой словарьrequest.session[restaurant] = dict()
Затем сделайте заданиеrequest.session[restaurant][like] = str(like)