你好我是一个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!')
我感到困惑的地方在于request.session.get('has_commented',False) 如果用户已注释'has_commented'键设置为true,那么您不会检查'has_commented'是否设置为true以确保用户不发布另一个注释而不是检查'has_commented'是否为false。我的逻辑是不正确的?会话密钥'has_commented'源自哪里?
答案 0 :(得分:1)
当您致电request.session.get('has_commented', False)
时,您问“会话密钥'has_commented'
是否设置为true?如果是,请返回该值。如果不是,则返回false。”因此,如果有人尚未评论,它将返回False
并继续执行其余代码。
'has_commented'
密钥来自以下几行:
request.session['has_commented'] = True
一旦有人发表评论,这会将'has_commented'
键设置为true。
答案 1 :(得分:1)
函数request.session.get需要2个参数,即
该函数将尝试返回键的值,但如果该键不存在,或者该值为NULL,则将返回默认值。
换句话说,如果'has_commented'的值为True,则if语句将运行。但是,如果会话中没有'has_comment'键,request.session.get将返回默认值False,if语句将不会运行。
会话密钥'has_commented'来自以下行:
request.session ['has_commented'] = True