Python 了解django文档代码-会话

Python 了解django文档代码-会话,python,django,web-applications,Python,Django,Web Applications,你好,我是django/python新手,需要一些帮助来理解下面的代码 def post_comment(request, new_comment): if request.session.get('has_commented', False): return HttpResponse("You've already commented.") c = comments.Comment(comment=new_comment) c.save() re

你好,我是django/python新手,需要一些帮助来理解下面的代码

def post_comment(request, new_comment):
    if request.session.get('has_commented', False):
        return HttpResponse("You've already commented.")
    c = comments.Comment(comment=new_comment)
    c.save()
    request.session['has_commented'] = True
    return HttpResponse('Thanks for your comment!')
我感到困惑的是if request.session.get('has_commented',False)
如果用户发表了评论,“has_commented”键设置为true,那么您是否要检查has_commented是否设置为true,以确保用户不会发布另一条评论,而不是检查has_commented是否为false。我的逻辑不正确吗?另外,会话密钥“has_commented”源自何处

当您调用
request.session.get('has_commented',False)
时,您会问“会话键
'has_commented'
是否设置为true?如果设置为true,则返回值。如果未设置,则返回False。”因此,如果有人尚未进行注释,它将返回
False
,并继续执行其余代码

“has_commented”
键源自以下几行:

request.session['has_commented'] = True

这将在有人发表评论后将
“has_commented”
键设置为true。

函数request.session.get接受两个参数,即

  • 密钥('has_commented')
  • 默认值(False)
函数将尝试为该键返回一个值,但如果该键不存在,或者该值为NULL,则将返回默认值

换句话说,如果'has_commented'的值为True,则将运行if语句。但是,如果会话中没有“has_comment”键,request.session.get将返回默认值False,if语句将不会运行

会话密钥“has_commented”源自以下行:


request.session['has_commented']=True

我假设
.get
是python的
dict
定义的
False
是在字典中找不到键时返回的值。