2013-01-22 1 views
1

안녕하세요 장고/파이썬 초보자입니다. 아래 코드를 이해하는 데 도움이 필요합니다. 내가 혼란 스러워요django 문서 코드 이해 - 세션

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'거짓) 사용자가 the'has_commented 주석 경우 경우에있다 '키가 true로 설정되어있는, 그래서 당신은 있는지 확인을 wouldnt' has_commented '가 true로 설정되어 사용자가'has_commented '가 false인지 확인하는 대신 다른 설명을 게시하지 않도록합니다. 내 논리가 맞지 않아? 또한 세션 키 'has_commented'의 출처는 어디입니까?

+0

. 'False'는 키가 사전에없는 경우 반환되는 값입니다. – akaIDIOT

답변

1

함수 request.session.get 즉

  • 2 개 매개 변수 키 ('has_commented')

함수가 값을 반환하려고합니다 (거짓)

  • 기본 소요 키가 존재하지만 키가 존재하지 않거나 값이 NULL이면 기본값이 대신 반환됩니다.

    즉, 'has_commented'값이 True이면 if 문이 실행됩니다. 그러나 세션에 'has_comment'키가 없으면 request.session.get은 기본값 인 False를 반환하고 if 문은 실행되지 않습니다.

    세션 키 'has_commented은'라인에서 유래 :

    request.session [ 'has_commented는'] 진정한 = 나는`파이썬의에 의해 정의 된 하나입니다 .get``dict` 있으리라 믿고있어

  • 1

    request.session.get('has_commented', False)으로 전화 할 때 "세션 키 'has_commented'이 true로 설정 되었습니까? 그렇다면 값을 반환하고 그렇지 않으면 false를 반환합니다."라고 묻습니다. 따라서 누군가 아직 댓글을 달지 않았다면, False을 반환하고 코드의 나머지 부분을 계속 수행 할 것입니다. 아래에 몇 줄에서

    'has_commented' 키 유래 : 누군가가 댓글을 달았되면

    request.session['has_commented'] = True 
    

    이 true로 'has_commented' 키를 설정합니다.