【发布时间】:2014-03-15 10:19:23
【问题描述】:
我正在编写 Tango With Django 教程,我正在尝试使用基于会话的 cookie 来计算用户访问网站的次数。当用户访问关于页面时,他们应该会看到一条消息,告诉他们访问该网站的频率。首先,我确保 django.contrib.sessions 列在 settings.py 中的 INSTALLED_APPS 下。
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.admindocs',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rango',
)
然后我运行了“python manage.py syncdb”。我的会话在 views.py 中处理,如下所示:
def index(request):
context_dict = {}
category_list = Category.objects.order_by('-likes')[:5]
category_list = remove_spaces(category_list)
context_dict['categories'] = category_list
page_list = Page.objects.order_by('-views')[:5]
context_dict['pages'] = page_list
# Deal with cookies
if request.session.get('last_visit'):
last_visit_time = request.session.get('last_visit')
visits = request.session.get('visits', 0)
# Use seconds instead of days for testing
if (datetime.now() - datetime.strptime(last_visit_time[:-7]), "%Y-%m-%d %H:%M:%S").seconds > 5:
request.session['visits'] = visits + 1
request.session['last_visit'] = str(datetime.now())
else:
request.session['last_visit'] = str(datetime.now())
request.session['visits'] = 1
return render(request, 'rango/index.html', context_dict)
def about(request):
if request.session.get('visits'):
count = request.session.get('visits')
else:
count = 0
context_dict = {'boldmessage': 'here is the about page','visits': count}
return render(request, 'rango/about.html', context_dict)
这是我的关于模板:
<!DOCTYPE html>
<html>
{% extends 'rango/base.html' %}
{% load static %}
{% block title %}About{% endblock %}
{% block body_block %}
<h1>Rango says...</h1>
<strong>{{ boldmessage }}</strong>
<h3>You have visited this site {{ visits }} times</h3>
<img src="{% static 'icon_12544.png' %}" alt="Diving helmet" />
{% endblock %}
</html>
每当我访问该页面时,我只看到用户访问了该站点 0 次。任何想法我做错了什么?
【问题讨论】:
标签: python django session cookies