2012-08-23 6 views
1

urls.py

(r'^(?P<restaurant>\d+)/like/(?P<option>\w+)$','like') 

views.py

def like(request,option="food",restaurant = 1): 
    if request.is_ajax: 
     rest = 'rest' 
     #option could be 'food' , 'service' , 'speciality' 
     like = '%s_like' % str(option) 

     if restaurant in request.session: 
      if like not in request.session[restaurant]: 
       request.session[restaurant][str(like)] =str(like) 
       session = [item for item in request.session[restaurant]] 
       return HttpResponse(session) 
      else: 
       session = [item for item in request.session[restaurant]] 
       return HttpResponse(session) 
     if restaurant not in request.session: 

      request.session[restaurant] = {} 

HTML

<a href="/{{rest.id}}/like/{{key|lower}}"> 
    <button data-placement="left" data-original-title="{{val.0}} people like {{key|upper}} at {{rest|title}}" rel="tooltip" class="like pull-right pointer btn btn-info text-left pad0 btn-mini mrg-left5 like-food"> 
     <i class="icon-thumbs-up"></i>&nbsp;{{val.0}} 
    </button></a> 

은 = 1정의 장고 세션 키 여기 동적

역시

01 rest.id

나는 '레스토랑'키를 사전으로 선언 한 시점을 이해할 수 없다. like 버튼을 클릭 할 때 모든 키를 반환하지 않을 때마다, 예를 들어 food_like 버튼을 클릭 할 때마다 하나의 키만 반환된다. , 중요한 food_like를 돌려 보내는 그때 그러나 나는 다시 service_like 버튼을 클릭 할 때 모든 food_like를 돌려주는 대신에 그것의 단지 돌아 오는 서비스처럼 서비스를 도와주세요. 미리 감사드립니다.

기본적으로 원하는 것은 중첩 된 세션 사전을 만드는 것입니다.

request.session[restaurant][food][like] 
request.session[restaurant][food][dislike] 
request.session[restaurant][service][like] 
request.session[restaurant][service][dislike] 

답변

1

제안 : 나는 더 나은 관리를위한 둥지 그것을 한 단계 루트 세션 딕셔너리에 동적 사전 값을 가질 수 없다.

request.session[restaurant][str(like)] = str(like) 

https://docs.djangoproject.com/en/dev/topics/http/sessions/#when-sessions-are-saved 세션을 수정하지 않습니다 그래서 그것은 기본적으로 저장 트리거되지 않습니다 : 체크 아웃 : request.session["restaurants"]

솔루션를 참조하십시오. https://docs.djangoproject.com/en/dev/ref/settings/#std:setting-SESSION_SAVE_EVERY_REQUEST

SESSION_SAVE_EVERY_REQUEST = True 
:

옵션은이

request.session.modified = True 

을 수정되었음을 세션을 말해 또는 세션마다 요청을 저장할 수 있습니다