1

こんにちは、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」はどこから発信されていますか?

4

2 に答える 2

1

を呼び出すとrequest.session.get('has_commented', False)、「セッションキー'has_commented'がtrueに設定されていますか?設定されている場合は値を返します。そうでない場合はfalseを返します」と尋ねます。したがって、誰かがまだコメントしていない場合は、戻っFalseて残りのコードを実行し続けます。

キーは、以下の'has_commented'数行から発生します。

request.session['has_commented'] = True

これにより、'has_commented'誰かがコメントすると、キーがtrueに設定されます。

于 2013-01-22T13:54:54.550 に答える
1

関数 request.session.get は2つのパラメータを取ります。

  • キー ('has_commented')
  • デフォルト (False)

関数はキーの値を返そうとしますが、キーが存在しない場合、または値が NULL の場合は、代わりにデフォルトが返されます。

つまり、'has_commented' の値が True の場合、if ステートメントが実行されます。ただし、セッションに「has_comment」キーがない場合、request.session.get はデフォルトの False を返し、if ステートメントは実行されません。

セッションキー「has_commented」は、次の行で発生します。

request.session['has_commented'] = True

于 2013-01-22T14:04:31.613 に答える