理解django文档代码-会话



你好,我是一个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_comments ',False)如果一个用户评论了' has_comments '键被设置为true,那么你不会检查' has_comments '是否被设置为true以确保用户不会发布另一个评论,而不是检查' has_comments '是否为false吗?我的逻辑错了吗?另外,会话密钥"has_comments"来自哪里?

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

  • key (' has_comments ')
  • 默认值(False)

函数将尝试为键返回一个值,但如果键不存在,或者值为NULL,则返回默认值。

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

会话键' has_comments '起源于以下行:

请求。session[' has_comments '] = True

当您调用request.session.get('has_commented', False)时,您正在询问"会话密钥'has_commented'是否已设置为true?"如果是,则返回该值。如果不是,则返回false。"因此,如果有人还没有注释,它将返回False并继续执行其余的代码。

'has_commented'键来自下面的几行:

request.session['has_commented'] = True

一旦有人注释,将'has_commented'键设置为true。

相关内容

  • 没有找到相关文章

最新更新