我想统计我的网站访问量。我的想法是使用cookie并设置超时时间。如果一个小时内没有请求(例如),然后有一个请求,我会将其视为一次新访问。 有没有一种方法可以拦截Django中的每个请求,而无需在每个视图函数中重复我的代码?
答案 0 :(得分:1)
是的,您可以使用 Django中间件
例如:
我会在名为my_app的应用中创建名为my_middleware.py的文件,并创建Django网站中定义的函数
public class Owner {
private Long id;
private String firstName;
private String secondName;
}
并在您的settings.py中添加中间件
def StatisticsMiddleware(get_response):
def middleware(request):
# Code to be executed for each request/response after
# the view is called.
return response #response should be defined before
return middleware
不要忘记将结果保存在数据库中。您可以创建模型并使用Cookie。因此,如果您的状况还可以,请保存到数据库中
设置Cookie:
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
......
......
'my_app.my_middleware.StatisticsMiddleware' #here your middleware
]
有关更多详细信息 https://docs.djangoproject.com/en/2.0/topics/http/middleware/