python - 这个 `if` 条件是否曾经运行过?

标签 python django if-statement

我正在阅读一些代码,但我很困惑:

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/

相关文章:

python - 在 python shell 中导入 pyspark

python - IPython - 循环输入历史记录中的 block ?

python - 是否可以扩展 SQLAlchemy 以添加锁定数据库的功能?

javascript - 如何使用 AJAX 和 jQuery 发布 Django 表单

Python2字输入if语句脚本

python - 允许用户使用 django 表单创建 "appointment"

python - 从具有初始数据的 View 中删除表单域

python - 一个 CreateView 中的两个 ModelForm

c - 具有多个语句的三元运算符

javascript - 使用 if/else 语句的函数