Skip to main content
 首页 » 编程设计

python之django session 以防止用户多次投票

2025年05月04日8pander-it

View .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) 

疑问

我在使用可变字符串设置 session key 时遇到问题, 我应该如何在“餐厅”键中设置 session 键“like”??,请帮忙

请您参考如下方法:

首先创建一个空字典 request.session[餐厅] = dict()

然后做作业 request.session[餐厅][like] = str(like)