我正在阅读一些代码,但我很困惑:
class PostListView(ListView):
# compressed
def get_context_data(self, **kwargs):
session_key = 'viewed_topic_{}'.format(self.topic.pk) # <-- here
if not self.request.session.get(session_key, False):
self.topic.views += 1
self.topic.save()
self.request.session[session_key] = True # <-- until here
kwargs['topic'] = self.topic
return super().get_context_data(**kwargs)
因此,if
条件会检查是否存在具有该 key 的 session ,然后将 self.topics.view
加一。
我在这里很困惑,因为每当用户登录网站时,他们的 session 都会自动创建,除非用户不登录网站,否则没有 session 的可能性为零。 (请注意,该项目不允许未经身份验证的用户查看主页,必须登录。)
这个 if
条件会被执行吗?
最佳答案
session_key = 'viewed_topic_{}'.format(self.topic.pk)
该行指示发布/主题特定的 session key 。
if not self.request.session.get(session_key, False):
此行检查 key 在 session 中是否可用。如果不是简单地将 key 添加到 session 中。
注意:这不是登录 session key 。因此,不要与登录 session key 混淆。
关于python - 这个 `if` 条件是否曾经运行过?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56053681/