2016-08-26 6 views
1

私は自分のプロジェクトにデータベースバックアップセッションを使用しています。私はAngularJSを使用してAJAXのPOSTリクエストを経由してセッション変数の値を更新しようとしています:ここでDjangoセッション変数がAJAXを使用して設定されたときに保存されない

app.factory('SomeFactory', ['$http', 'djangoUrl', 
    function ($http, djangoUrl) { 
    return { 
     getSomeDataAndUpdateSessionVar: function() { 
     return $http({ 
      method: 'POST', 
      url: djangoUrl.reverse('some_app:list'), 
      data: { 
      param1: "param1" 
      } 
     }) 
     }, 
    } 
    } 
]); 

は私のビューの簡略化され、POSTメソッドである:

class DocumentListView(JsonRequestResponseMixin, View): 
    def post(self, request, *args, **kwargs): 
     request_data = json.loads(request.body) 
     data_to_be_fetched = request.session.get("data_to_be_fetched", None) 
     if not data_to_be_fetched: 
      data_to_be_fetched = fetch_data(request_data) 
      request.session["data_to_be_fetched"] = data_to_be_fetched 
      print request.session.get("data_to_be_fetched") # This will return the updated value 

     return HttpResponse(json.dumps(data_to_be_fetched), content_type="application/json") 

セッション変数があるように思えます上記のメソッドを再度呼び出すと、data_to_be_fetchedの値はまだNoneになるので、保存されません。変わったことは、メソッドを2回目に呼び出した後に、セッション変数の新しい値が最後に保存されるということです(data_to_be_fetchedは2回目に保存した後にフェッチしたときにはもはやNoneになりません)。それはなぜそれのような振る舞いですか? AJAXリクエスト中にセッション変数を設定する場合にのみ発生します。

私は、セッション変数を更新した後、以下を追加しようとしたが、動作は同じです:

request.session.modified = True 

私も設定に以下を追加してみましたが、それはどちらか助けていません。

SESSION_SAVE_EVERY_REQUEST = True 

答えて

1

問題は、127.0.0.1:8000ではなくlocalhost:8000を使用することです。したがって、常に127.0.0.1:8000を使用してください。 この修正プログラム

関連する問題