gpt4 book ai didi

python - 我如何计算 Django 中页面的访问量? (通过重定向)

转载 作者:太空宇宙 更新时间:2023-11-04 06:58:54 27 4
gpt4 key购买 nike

我已经阅读了其他几个问题,但我要找的东西不在那里。

我想计算用户浏览了 ToPost/to_post.html 部分的次数。

延迟重定向有效,但增加访问次数无效:post.visit_num += 1

我有一个 View ,其模板在一秒钟后重定向:

def ToPost(request, pk):
post = Post.objects.get(pk=pk)
post.visit_num += 1
args = {'post': post}
return render(request, 'posts/to_post.html', args)

pk 在 URL 中:

url(r'^(?P<pk>\d+)/to-post/$', views.ToPost, name='to_post'),

模板to_post.html:

{% extends 'base.html' %}

{% block head %}
<meta http-equiv="refresh" content="1;url={% url 'home_space:view_post' pk=post.pk %}">
{% endblock %}

{% block body %}
<div class="container">
<h2>
To post {{ post.pk }}...
</h2>
</div>
{% endblock %}

Post的模型:

class Post(models.Model):
title = models.CharField(max_length=128, verbose_name='Title')
body = models.CharField(max_length=500, verbose_name='Description')
user = models.ForeignKey(User, on_delete=models.CASCADE)
visit_num = models.PositiveIntegerField(default=0)

def __str__(self):
return self.title

最佳答案

您必须在递增后保存 post 实例,并使用 F 对象来避免竞争条件。也不要将函数名称大写,而是使用 snake_case,更多关于 F 对象的信息在这里 https://docs.djangoproject.com/en/2.1/ref/models/expressions/#f-expressions

from django.db.models import F    

def to_post(request, pk):
post = Post.objects.get(pk=pk)
post.visit_num = F('visit_num') + 1
post.save()
args = {'post': post}
return render(request, 'posts/to_post.html', args)

关于python - 我如何计算 Django 中页面的访问量? (通过重定向),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51966863/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com