你好,我是一个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。