【问题标题】:defining django session keys dynamically动态定义 Django 会话密钥
【发布时间】:2012-08-23 23:33:29
【问题描述】:

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>

这里 rest.id = 1

怀疑

当我将“餐厅”键声明为字典时,我无法理解,然后,当我单击“赞”按钮时,它不会返回所有键,每次只返回一个键,例如当我单击 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] 

【问题讨论】:

    标签: django django-sessions


    【解决方案1】:

    建议:我不会在根会话字典中包含您的动态字典值,将其嵌套一层以获得更好的可管理性。见request.session["restaurants"]

    解决方案:查看:https://docs.djangoproject.com/en/dev/topics/http/sessions/#when-sessions-are-saved

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

    不修改会话,因此默认不会触发保存。

    您的选择是告诉会话它已被修改

    request.session.modified = True
    

    或保存每个请求的会话:https://docs.djangoproject.com/en/dev/ref/settings/#std:setting-SESSION_SAVE_EVERY_REQUEST

    SESSION_SAVE_EVERY_REQUEST = True
    

    【讨论】:

      猜你喜欢
      • 2021-09-02
      • 2013-04-28
      • 1970-01-01
      • 2012-06-26
      • 2017-12-12
      • 2012-07-20
      • 1970-01-01
      • 2023-04-06
      • 2017-12-10
      相关资源
      最近更新 更多