Python 这个“如果”条件曾经运行过吗?
我正在阅读一些代码,我在这里感到困惑:Python 这个“如果”条件曾经运行过吗?,python,django,if-statement,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):
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)
类PostListView(ListView):
#压缩的
def获取上下文数据(自身,**kwargs):
session_key='viewsed_topic_{}.format(self.topic.pk)#将执行if
条件(之前会出现异常)。将根据条件执行if
块
如果认为该条件为真,则取决于是否未设置该主题id的键。对于该主题ID的第1次请求,该值应为true;对于同一会话中的任何后续请求,该值应为false。如果引发该键或异常的其他代码集,则可能会有所不同
顺便说一句,你可以使用:
if session_key not in self.request.session:
这也会更具可读性。session\u key='viewsed\u topic\u{}.format(self.topic.pk)
该行指示发布/主题特定的会话密钥。
如果不是self.request.session.get(session\u key,False):
此行检查会话中是否有密钥。如果不是简单地将密钥添加到会话中。
注意:这不是登录会话密钥。因此,不要与登录会话键混淆。将打印(…)
放入if
中,并使用不同的设置对其进行测试。您将看到是否可以访问print()
。还可以在if语句之前放置一个不同的print语句,以检查它是否到达if语句,以感谢兄弟,如果条件很好,请用此语句替换它