# views.py
def like(request,option="food",restaurant = 1):
if request.is_ajax:
like = '%s_like' % str(option)
if 'restaurants' in request.session:
if restaurant not in request.session['restaurants']:
request.session['restaurants'][restaurant] = {}
x = request.session['restaurants'][restaurant].get(str(like),False)
if x:
return HttpResponse(False)
else:
request.session['restaurants'][restaurant][str(like)] = True
request.session.modified = True
else:
request.session['restaurants'] = {}
request.session.modified = True
我正在使用context_instance = RequestContext(request)
以便会话变量可用,同时呈现响应。我的模板:
{% if request.session.restaurants.rest.id.food_like %}
working
{% else %}
failed
{% endif %}
我的查看会话密钥如下所示:
request.session["restaurants"][restaurant][like] = True
其中restaurant
是餐馆ID,可能是“food_like”,“service_like”,“special_like”之一。
那么我应该如何在我的模板中访问它?例如,如果我使用
request.session.restaurants.rest.id.food_like
它无法确定。
答案 0 :(得分:9)
django.core.context_processors.request
可能没有settings.TEMPLATE_CONTEXT_PROCESSORS
。
您可以尝试在模板中打印{{ request }}
,如果它没有显示任何内容,则表示您没有。{/ p>
您也可以使用./manage.py shell检查它:
from django.conf import settings
print settings.TEMPLATE_CONTEXT_PROCESSORS
如果django.core.context_processors.request
不存在,请将shell输出中的TEMPLATE_CONTEXT_PROCESSORS
复制到settings.py中,然后将django.core.context_processors.request
添加到此列表中。
答案 1 :(得分:4)
补充@jpic回复。
而不是从shell复制内容TEMPLATE_CONTEXT_PROCESSORS,您可以执行以下操作:
from django.conf import global_settings
TEMPLATE_CONTEXT_PROCESSORS = global_settings.TEMPLATE_CONTEXT_PROCESSORS + (
"django.core.context_processors.request",
)
这样,您的全局设置将被保留 确保保留尾随逗号,以便python可以将其视为元组