0

バックエンド データベースとしてDjangowithを使用しています。MongoDB

私はsettings.pyすでにこれらのコードを設定しています:

SESSION_ENGINE = 'mongoengine.django.sessions'

'django.contrib.sessions.middleware.SessionMiddleware',

'django.contrib.sessions',

そして私のview/user.py(コードの一部のみ)

                 if user.password == password:
                    #add session information
                    if request.session.test_cookie_worked():
                        returnmsg = "COOKIE OK"
                    else:
                        returnmsg = "COOKIE ERR"
                    response = HttpResponse(returnmsg)
                    response.set_cookie("username", username)
                    request.session['username'] = username
                    user.log.append(UserLog(time=datetime.now(), ip=request.META['REMOTE_ADDR'], login=True))
                    user.save()
                    return response

サイトを実行すると、この関数と、セッション設定を確認する必要がある他の関数でログインできusernameましたresponse.session

しかし、returnmsg はCOOKIE ERRで、Safari の Web Inspector を使用すると、ここにセッションも Cookie も表示されません。

Django はセッション データをどこに保存しますか? クライアントのコンピューターでエンコードされた Cookie である必要がありますか? クライアントのコンピューターに保存されていない場合、なぜDjangoそれを取得できるのでしょうか? また、私のコードでは、クッキーを直接設定しようとしましたが、まだ機能しません。

について何か問題がありMongoEngineますか? 使い方を間違ったのでしょうか?

4

1 に答える 1

1

最初に でテスト Cookie を設定set_test_cookie()し、その後のリクエストで で確認する必要がありtest_cookie_worked()ます。

この関数は、Cookie が機能するかどうかをテストしません。具体的には、テスト Cookie が正常に設定されたかどうかを確認します。これにより、Cookie が機能するかどうかが確認されます。

を使用しない限りset_test_cookie()test_cookie_worked()常に失敗します。

于 2012-05-09T05:07:28.620 に答える