6

今、私はクラスベースのビューを持っています。このビューでCookieを設定したいのですが、応答を取得できますが、getメソッドで応答が返されます。したがって、Cookieを応答に設定できません。クラスベースのビューで応答を取得する方法

 class MyView(TemplateView):
    def get_context_data(self, **kwargs):
        context = super(UBaseTemplateView, self).get_context_data(**kwargs)

        #in here set cookie,but can get the response 
        #response.set_cookie("success","success")

        return context
4

1 に答える 1

13

requestでのみset_cookie を使用することはできませんresponseが、burhan-khalid は正しい方向に進んでいました。get_context_data辞書のみを返すため、そこで応答にアクセスすることはできません。で、dispatchまたは でアクセスする必要があります。以下に例を示します。TemplateViewrender_to_response

class MyView(TemplateView):
    def render_to_response(self, context, **response_kwargs):
        response = super(MyView, self).render_to_response(context, **response_kwargs)
        response.set_cookie("success","success")
        return response

ですべての処理コードを実行しないことをお勧めしますget_context_data。に設定する Cookie を取得するには、リファクタリングが必要になる場合がありますrender_to_response

于 2013-09-18T15:23:22.580 に答える