我想统计我网站上的访问量。我的想法是使用 cookies 并设置超时时间。如果一个小时内没有请求(例如),然后有请求,我会将其视为新访问。 有没有办法拦截 Django 中的每个请求,而无需在每个 View 函数中重复我的代码?
最佳答案
是的,您可以使用Django中间件
例如:
我将在名为 my_app 的应用程序中创建一个名为 my_middleware.py 的文件,并创建一个在 Django 网站中定义的函数
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
并在 settings.py 中添加中间件
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
]
不要忘记将结果保存到数据库中。您可以创建模型并使用 cookie。因此,如果您的条件正常,则保存到数据库
设置 cookie:
response = get_response(request)
response.set_cookie('name_of_cookie', 'info_inside_the_cookie',
max_age=age_of_the_cookie)
了解更多详情 https://docs.djangoproject.com/en/2.0/topics/http/middleware/
关于django - 拦截我的 Django 应用程序中的每个请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51560445/